我希望能在网站上使用PHP创建PNG图片,并按照定义的比例进行打印。因此,我想直接使用PHP设置图像的DPI值。不幸的是,我没有找到任何可用于此目的的函数调用。是否有任何函数可以设置/更新PNG文件的元数据?也许使用HTML包装器和CSS样式表进行打印的其他解决方案更合理。但我更喜欢“直接在图像上”的方法...
PNG文件可以包含任意的头信息。如果您查看PNG规范,您可以向给定的PNG添加tEXt块(也称为数据块)。有关tEXT数据块的更多信息,请参见规范的第4.2.3节。例如,Adobe Photoshop向其PNG添加元XML。我不确定GD是否支持此功能,但建议从那里开始寻找。这是完全可能的。以下是一些处理解析PNG数据块的PHP代码。这可能会指引你朝正确的方向前进。http://code.svn.wordpress.org/imagelibs/libpng.php 下面是一个文本编辑器的PNG截图,显示了Photoshop生成的XML。https://dev59.com/0ErSa4cB1Zd3GeqPaOdg#14356339
pHYs 块(物理分辨率)可以让您设置 DPI(实际上是每米像素,但只是单位转换)。当然,PNG 阅读器可能会忽略它。 PHP 不包括(据我所知)读写完整的 PNG 元数据支持,您必须自己处理,参见 eg。