我正在将现有的 MVC 4 网站从自制用户文件上传切换为在上传时使用 ImageResizer 调整文件大小。
我在文档中看到我不应该使用 System.Drawing,但我无法找出任何其他获取图像尺寸的方法。
尺寸是来自原始图像还是调整大小的图像并不重要,因为我保留纵横比,只需要确定图像是横向还是纵向。
我在这里添加了我在回复 @Nathanael 的答案的评论中引用的代码。
ImageJob ij = new ImageJob(file, requestedImageInfo: null);
int ? y = ij.SourceWidth;
int ? z = ij.SourceHeight;
如果您可以在上传过程中存储图像尺寸(从ImageJob.Source宽度/高度 https://github.com/imazen/resizer/blob/c4c586b58b2211ad0f48f7d8285e951ff6f262f9/Core/ImageJob.cs#L117或 LoadImageInfo),这是最好的,因为从文件中读取图像尺寸涉及大量 I/O。
如果没有,ImageResizer 提供字典 LoadImaged Info(对象源,IEnumerable 请求的信息) https://github.com/imazen/resizer/blob/e3cbd37a74e689ff68191c6129ef04de55686e19/Core/ImageBuilder.cs#L114事后这样做的方法。请记住,它确实涉及从磁盘读取,并且您不想在单个 HTTP 请求中多次调用它。将这些数字放入数据库中。
您始终可以通过以下方式计算图像的最终尺寸ImageBuilder.GetFinalSize(originalSize, instructions)
。另一方面,这非常快,因为它不涉及 I/O,只涉及数学。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)