我正在将现有的MVC 4网站从自制用户文件上传切换到使用ImageResizer上传文件大小。
我在文档中看到我不应该使用System.Drawing,但我无法找出任何其他方法来获取图像尺寸。
如果尺寸来自原始图像或调整大小的图像,则无关紧要,因为我保留纵横比,只需要确定图像是横向还是纵向。
我在这里添加了代码,我在回复@ Nathanael答案的评论中提到了这段代码。
ImageJob ij = new ImageJob(file, requestedImageInfo: null);
int ? y = ij.SourceWidth;
int ? z = ij.SourceHeight;
答案 0 :(得分:2)
如果您可以在上传期间存储图像尺寸(来自ImageJob.SourceWidth/Height或LoadImageInfo),那么最好,因为从文件中读取图像尺寸涉及大量I / O.
如果没有,ImageResizer会在事后提供IDictionary LoadImageInfo(object source, IEnumerable requestedInfo)方法。请记住,它确实涉及从磁盘读取,并且您不希望在单个HTTP请求中多次调用。将这些数字放在数据库中。
您始终可以通过ImageBuilder.GetFinalSize(originalSize, instructions)
计算图片的最终尺寸。另一方面,这非常快,因为它不涉及I / O,只是数学。