3

例如,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);
4

2 回答 2

7

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

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

更新:

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

于 2011-12-14T14:26:02.323 回答
1

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

因此,如果我有一个 100 像素宽和 100 像素高(100 像素 × 100 像素)的图像,如果我打印它(或将其转换为指定打印尺寸的格式),它将是 100 DPI,这样它就完全适合一平方英寸 (1" × 1")。如果我打印它以适应一个两英寸乘两英寸的正方形,它将是 50 DPI,&c。

于 2011-12-14T14:27:46.513 回答