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

我正在将现有的MVC 4网站从家庭用户文件上传切换到使用ImageResizer上传文件时resize。

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

如果尺寸来自原始图像或resize的图像,则无关紧要,因为我保留纵横比并且仅需要确定图像是横向还是纵向。

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

ImageJob ij = new ImageJob(file, requestedImageInfo: null); int ? y = ij.SourceWidth; int ? z = ij.SourceHeight; 

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

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

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