清洁解决方案,在创建的PNG图像上设置DPI

时间:2013-08-26 07:30:48

标签: php html image png gd

我想在网站上使用PHP创建PNG图像。这些应按规定的比例印刷。所以我想直接使用PHP设置图像的DPI值。不幸的是,我没有找到任何函数调用。

是否有任何可以设置/更新PNG文件元数据的功能? 也许其他解决方案更合理,因为使用带有CSS样式表的HTML-Wrapper进行打印,从外部定义分辨率。但我更喜欢“直接在图像上”的方法......

3 个答案:

答案 0 :(得分:2)

PNG可以包含任意标头。如果查看PNG specification,可以将tEXt块(称为块)添加到给定的PNG。有关tEXT块的更多信息,请参阅规范的4.2.3节。

例如,Adobe Photoshop将Meta XML添加到其PNG中。我不确定GD是否支持这个,但我会在那里开始。这绝对是可能的。

这是一些处理解析PNG块的PHP代码。它可能会引导你朝着正确的方向前进。 http://code.svn.wordpress.org/imagelibs/libpng.php

这是PNG文本编辑器的屏幕截图,显示了Photoshop生成的XML。 https://stackoverflow.com/a/14356339/278976

答案 1 :(得分:1)

pHYs块(物理分辨率)允许您设置DPI(实际上,按米计算,但它只是一个单位转换)。当然,PNG阅读器可能会忽略它。

PHP不包含(AFAIK)对读取/写入完整PNG元数据的支持,您必须自己动手,请参阅eg

答案 2 :(得分:0)

最简单的方法是使用ImageMagick,如this answer中所述。如果您想在纯PHP中设置PNG分辨率,可以查看my answer to the similar question