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

C# 使用ImageResizer获取图像尺寸的最佳方法,c#,asp.net-mvc-4,imageresizer,C#,Asp.net Mvc 4,Imageresizer,我正在将现有的MVC4网站从自制的用户文件上传切换到使用ImageResizer在上传文件时调整文件大小 我在文档中看到我不应该使用System.Drawing,但我想不出任何其他方法来获取图像尺寸 尺寸是否来自原始图像或调整大小的图像并不重要,因为我保留纵横比,只需要确定图像是横向还是纵向 我在这里添加了代码,我在回复@Nathanel的回答时提到了代码 ImageJob ij = new ImageJob(file, requestedImageInfo: null);

我正在将现有的MVC4网站从自制的用户文件上传切换到使用ImageResizer在上传文件时调整文件大小

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

尺寸是否来自原始图像或调整大小的图像并不重要,因为我保留纵横比,只需要确定图像是横向还是纵向

我在这里添加了代码,我在回复@Nathanel的回答时提到了代码

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

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

如果您可以在上传期间存储图像尺寸(从或加载ImageInfo),这是最好的,因为从文件读取图像尺寸需要大量I/O

如果不是,ImageResizer提供了在事件发生后执行此操作的方法。请记住,它确实涉及到从磁盘读取,并且您不希望在一个HTTP请求中多次调用它。把这些数字输入数据库


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

非常感谢你,Nathanel。希望你不介意帮我一点忙,告诉我我的语法有什么问题。我首先有这段代码,就在发布的文件被测试为null之后。imagejob不为null,但SouceHeight和SourceWidth都为空。我在原来的问题中粘贴了上面的代码。
int
之间的空格可能会产生编译器错误。在尝试访问结果之前,您还需要调用
ij.Build()
。var imageInfoJob=new ImageJob(file.InputStream,null);var imageInfo=imageInfoJob.Build();这就是如何获得图像文件的尺寸。ImagerResizer文档没有示例。谢谢,这是缺少的部分。我对ImageResizer非常满意。(FWIW,我注意到编译器似乎并不在意这个空间,对我来说,在笔记本电脑上工作时更容易看到。)