2013-04-30 52 views
1
的DPI

我必须使用getImageResolution()iMagick - PNG

任何想法,我可能做错了的时候当我使用iMagick返回为118.11 DPI,我已经保存为300DPI

PNG

由于

+0

用户也报告说,此功能不能正常工作。你使用哪种iMagick版本? – 2013-04-30 09:54:06

+0

根据'convert -v'我使用'6.7.7-10' – user1970557 2013-04-30 09:56:50

+0

请参阅[如何使用ImageMagick查找每英寸像素数(PPI)](http://stackoverflow.com/q/14632254/2261774)以及下面的答案。 – 2013-04-30 10:01:26

回答

2

首先,118.11恰好是300/2.54的结果。如1英寸= 2.54厘米,看起来iMagick报告每厘米点数而不是每英寸点数。所以你只需要将iMagic提供的数字乘以2.54即可得到原始的DPI。

但是,一般来说,数字光栅图像上的DPI没有多大意义,因为它们的物理尺寸不能以英寸或厘米为单位进行测量。当然,您可以在大多数图像格式上设置这些尺寸,并且可能在打印时使用这些尺寸,但对于其他任何目的,这些信息不会以任何方式影响图像。特别是在计算机屏幕上显示时,设置DPI将不起作用。

+0

检查PNG内部的“真实值”。例如,如果将图像发送到打印机,则DPI值是有意义的。然后打印机通过像素大小和DPI值了解图像在纸上的大小。 – 2013-04-30 09:59:22

+0

啊。我不得不使用'round()'作为DPI * 2.54是'299.9994' – user1970557 2013-04-30 10:04:06

+0

图像将显示在Print-ready PDF上,因此我需要检查上传时他们是300DPI – user1970557 2013-04-30 10:04:47

-1

当使用PNG文件时,您的Imagick版本会返回每厘米PPC的像素数,而不是每英寸点数DPI(像素每英寸PPI)。但你正在寻找更晚的。

请参阅以及How to find pixels per inch (PPI) using ImageMagick其中概述如下公式将这些值转换:

const INCH_PER_CENTIMETER = 2.54; 

$ppi = (int) round($ppcm * INCH_PER_CENTIMETER); 
+0

我不明白。英寸比厘米大,所以你的代码与它应该做的完全相反。 您应该用CENTIMETERS_PER_INCHES除以厘米,您将得到英寸。 我错过了什么吗? – nbrogi 2016-10-15 17:08:14