c# - C#和Photoshop在图像分辨率(ppi)上的区别

标签 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);

最佳答案

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

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

更新:

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

关于c# - C#和Photoshop在图像分辨率(ppi)上的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8506031/

相关文章:

c# - 处理队列中或每个接收到的数据包的 UDP 数据包

algorithm - 测量图像中痕迹的平均厚度

python - 将 Matlab 图叠加到 Python 图/图像上

android - 适用于 Android 应用程序设计的 PSD 文件尺寸和分辨率

javascript - 如何 - Photoshop 脚本 - 合并两层

javascript - 使用 javascript 获取选定图层或图层组数组 (Photoshop CS4)

c# - 转换 DateTime 导致 IndexOutOfRangeException

c# - 无法从 EC2 实例元数据服务获取 IAM 安全凭证 - .netcore AWS SDK

c# - 服务帐户 - 必须是 G Suite 域用户

Android 图像未出现在 iText pdf 中