2011-12-14 58 views
3

例如,C#说所选图像包含96 ppi,而Photoshop中同一图像包含72 ppi。C#和Photoshop之间图像分辨率(ppi)的差异

为什么会有差异?

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

我们需要建立某种形式的验证控件的排斥与PPI的所有图像= 300

控制应支持以下格式:JPG,JPEG,GIF,PNG,BMP。

代码列表如下:

Image i = Image.FromFile(FileName); 

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

我不知道C#如何'说'一个这样的事情。你如何向我们展示一些代码?你使用第三方组件? whot? – Shai 2011-12-14 14:26:03

+0

C#如何告诉你?显示一些代码,否则我确信这个问题将被关闭。 – spender 2011-12-14 14:27:06

回答

7

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

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

更新:

您的代码获取不同的值是C#从计算机上当前的DPI设置取其VerticalResolutionHorizontalResolution值的原因。 Photoshop的DPI用于打印,因此如果您想将图像发送到打印机,它就知道物理尺寸。它有一个72dpi的默认值,但你可以改变它。然而,这个值在屏幕上没有意义,因为屏幕只处理像素。

1

DPI表示每英寸点数。位图图像不具有固有的DPI,它仅具有水平像素数量和垂直像素数量(宽度和高度)的大小。当您说出每英寸需要挤入多少像素时,图像才会获得分辨率(在DPI中)。

因此,如果我有一个100像素宽和100像素高(100像素×100像素)的图像,如果我将其打印(或将其转换为指定打印尺寸的格式),则它将为100 DPI,完全适合1平方英寸(1“×1”)。如果我将其打印成适合两英寸两英寸的方形,则为50 DPI,即& c。