【问题标题】:iMagick - DPI of PNGiMagick - PNG的DPI
【发布时间】:2013-04-30 18:09:06
【问题描述】:

我有一个PNG,已保存为 300DPI

当我使用 iMagick 时,它在使用 getImageResolution() 时返回 118.11 DPI

有什么想法我可能做错了吗?

谢谢

【问题讨论】:

标签: php imagemagick png


【解决方案1】:

首先,118.11 正是 300 / 2.54 的结果。由于 1 英寸 = 2.54 厘米,iMagick 似乎报告每厘米点数而不是每英寸点数。因此,您只需将 iMagic 提供的数字乘以 2.54 即可获得原始 DPI。

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

【讨论】:

  • 例如,如果您将图像发送到打印机,则 DPI 值是有意义的。然后打印机通过像素大小和 DPI 值知道图像在纸上的大小。
  • 啊。我不得不使用 round() 因为 DPI * 2.54 是 299.9994
  • 图像将显示在可打印的 PDF 上,因此我需要在上传时检查它们是否为 300DPI
  • @user1970557:那么在这种情况下,这个检查意味着 nothing 并且 Simon 的评论是完全正确的。这个元数据是无用的,因为您需要图像中有足够的像素。例如。我可以以 300 DPI 向您上传 3x3 像素的图像。但你不想使用它。
  • 进一步扩展:大多数图像以任意分辨率存储,有时为 72 或 90 DPI,有时使用 150 或 300 DPI。布局文档时,图像通常设置为所需的大小,例如3乘2英寸。这将确定分辨率,因为像素将用于填充这些尺寸。因此,即使图像存储为“300 DPI”,4752 像素 x 3168 像素的图像也会产生 1584 DPI 的分辨率(打印为 3 x 2 英寸时)。
【解决方案2】:

当使用 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);

【讨论】:

  • 我不明白。英寸大于厘米,因此您的代码与它应该做的完全相反。您应该将厘米除以 CENTIMETERS_PER_INCHES,您将得到英寸。我错过了什么吗?
  • @nkkollaw 常数 2.54 应该被称为 CENTIMETERS_PER_INCH,是的,但是将 PPC 乘以它得到 PPI 是完全正确的:一英寸更大,所以可以容纳更多的像素。 (更正式地说,在尺寸像素/厘米中,厘米在分母中,因此要获得尺寸像素/英寸的东西,将尺寸像素/厘米的东西乘以尺寸厘米/英寸的东西。)
猜你喜欢
  • 2012-07-09
  • 2011-11-19
  • 1970-01-01
  • 2011-05-03
  • 1970-01-01
  • 2017-05-17
  • 1970-01-01
  • 2013-09-20
  • 2011-09-30
相关资源
最近更新 更多