使用C#和.NET环境获取jpeg图像的分辨率?

6
我们的客户将上传图像以打印在他们的文档上,我们被要求想出一种方法来获取图像的分辨率,以便在最终产品中警告他们是否图像分辨率过低,会导致像素化。
如果必要,我们也可以使用尺寸,如果有人知道如何获取尺寸,但分辨率更受欢迎。
谢谢。
4个回答

13

8

这取决于您想要什么...如果您想要图片的DPI,则需要查找HorizontalResolution,这是图片的DPI。

Image i = Image.FromFile(@"fileName.jpg");
i.HorizontalResolution;

如果您想确定图像的大小,则需要计算图像的尺寸,即:

int docHeight = (i.Height / i.VerticalResolution);
int docWidth = (i.Width / i.HorizontalResolution);

这将为您提供以英寸为单位的文档高度和宽度,您可以将其与所需的最小尺寸进行比较。

+1. Brian,你让我省去了数小时的研究时间,非常有见地! - Todd Main

3
DPI只在打印时才有意义。72dpi是Mac的标准,96dpi是Windows的标准。屏幕分辨率只考虑像素,因此72dpi的800x600 jpeg与96dpi的800x600像素具有相同的屏幕分辨率。
回到80年代,Mac使用72dpi的屏幕/打印分辨率来适应屏幕/打印大小,因此当您在屏幕上以1:1的比例显示图像时,它对应于打印机上相同的大小。 Windows将屏幕分辨率增加到96dpi以获得更好的字体显示效果,但结果是屏幕图像不再适合打印尺寸。
因此,在Web项目中,如果图像不是用于打印,请不要担心DPI; 72dpi、96dpi甚至1200dpi都应该显示相同。

2
Image image = Image.FromFile( [file] );
GraphicsUnit unit = GraphicsUnit.Point;
RectangleF rect = image.GetBounds( ref unit );
float hres = image.HorizontalResolution;
float vres = image.VerticalResolution;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接