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

Pro*_*bar 3 c# photoshop image 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);
Run Code Online (Sandbox Code Playgroud)

Pol*_*ial 7

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

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

更新:

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