C#和Photoshop之间图像分辨率(ppi)的差异

时间:2011-12-14 14:24:28

标签: c# image photoshop ppi

例如,C#表示所选图像包含96 ppi,而Photoshop中的相同图像包含72 ppi。

为什么会有区别?

在这种情况下,我倾向于相信Photoshop,以及如果C#返回错误结果,如何测试图像分辨率?

我们需要构建某种验证器控件,使用ppi!= 300拒绝所有图像。

控件应支持以下格式:jpg,jpeg,gif,png,bmp。

代码如下:

Image i = Image.FromFile(FileName);

Console.Write(i.VerticalResolution);
Console.Write(i.HorizontalResolution);

2 个答案:

答案 0 :(得分:7)

DPI表示每英寸点(像素)。基于当前显示器的大小和分辨率,以英寸为单位的物理尺寸是主观的。除非你依赖于元数据(gif和bmp不包含),否则你无法可靠地计算出来。

Photoshop只有DPI的规定值,它在翻译图像进行打印时使用。此值存储在PSD文件中,可以复制到JPEG元数据,但如果以不带DPI元数据的格式保存图像,则不会存储该信息。

<强>更新

您的代码获取不同值的原因是C#从计算机上的当前DPI设置中获取其VerticalResolutionHorizontalResolution值。 Photoshop的DPI用于打印,因此如果要将图像发送到打印机,它会知道物理尺寸。它的默认值为72dpi,但您可以更改此值。但是,该值在屏幕上没有意义,因为屏幕仅以像素为单位。

答案 1 :(得分:1)

DPI表示每英寸点数。位图图像没有固有的DPI,它只有一个大小,即水平像素数和垂直像素数(宽度和高度)。当您说出要挤入每英寸的像素数时,图像只能获得分辨率(以DPI为单位)。

因此,如果我的图像宽100像素,高100像素(100像素×100像素),如果我打印它(或将其转换为指示打印尺寸的格式),它将是100 DPI,这样它就适合完全在一平方英寸(1“×1”)。如果我打印它以适合2英寸乘2英寸的正方形,它将是50 DPI,&amp; c。