我想在网站上使用PHP创建PNG图像。这些应按规定的比例印刷。所以我想直接使用PHP设置图像的DPI值。不幸的是,我没有找到任何函数调用。
是否有任何可以设置/更新PNG文件元数据的功能? 也许其他解决方案更合理,因为使用带有CSS样式表的HTML-Wrapper进行打印,从外部定义分辨率。但我更喜欢“直接在图像上”的方法......
答案 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。