使用ImageResizer获取图像尺寸的最佳方法

时间:2015-01-10 17:00:28

标签: c# asp.net-mvc-4 imageresizer

我正在将现有的MVC 4网站从自制用户文件上传切换到使用ImageResizer上传文件大小。

我在文档中看到我不应该使用System.Drawing,但我无法找出任何其他方法来获取图像尺寸。

如果尺寸来自原始图像或调整大小的图像,则无关紧要,因为我保留纵横比,只需要确定图像是横向还是纵向。

我在这里添加了代码,我在回复@ Nathanael答案的评论中提到了这段代码。

  ImageJob ij = new ImageJob(file, requestedImageInfo: null);

             int ? y = ij.SourceWidth;
             int ?  z = ij.SourceHeight;

1 个答案:

答案 0 :(得分:2)

如果您可以在上传期间存储图像尺寸(来自ImageJob.SourceWidth/Height或LoadImageInfo),那么最好,因为从文件中读取图像尺寸涉及大量I / O.

如果没有,ImageResizer会在事后提供IDictionary LoadImageInfo(object source, IEnumerable requestedInfo)方法。请记住,它确实涉及从磁盘读取,并且您不希望在单个HTTP请求中多次调用。将这些数字放在数据库中。

您始终可以通过ImageBuilder.GetFinalSize(originalSize, instructions)计算图片的最终尺寸。另一方面,这非常快,因为它不涉及I / O,只是数学。