3

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

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

4

3 回答 3

2

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

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

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

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

于 2013-08-26T07:37:12.883 回答
1

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

PHP 不包括(AFAIK)对读取/写入完整 PNG 元数据的支持,您必须自己完成,请参见例如

于 2013-08-26T14:04:23.443 回答
0

最简单的方法是使用 ImageMagick,如this answer中所建议的那样。如果您想在纯 PHP 中设置 PNG 分辨率,您可以查看我对类似问题的回答

于 2017-10-03T10:00:56.850 回答