PNG图像可以包含多个页面吗?

Posted

技术标签:

【中文标题】PNG图像可以包含多个页面吗?【英文标题】:Can a PNG image contain multiple pages? 【发布时间】:2016-04-05 17:29:24 【问题描述】:

在 OSX 上,我将一个多页 PDF 文件转换为 PNG,并且(不知何故)它创建了一个多页 PNG 文件。

是否有允许这样做的 PNG 格式的扩展?或者这不是我可以有效创造的东西吗?

~~~~

为了澄清,这是一个 PNG 文件,根据内置的 file 命令和来自 imagemagick 的 identify 命令。

$ file algorithms-combined-print.png 
algorithms-combined-print.png: PNG image data, 1275 x 1650, 8-bit/color RGBA, non-interlaced

$ identify algorithms-combined-print.png 
algorithms-combined-print.png PNG 1275x1650 1275x1650+0+0 8-bit sRGB 3.537MB 0.000u 0:00.000

这里是命令identify -verbose algorithms-combined-print.png:http://pastebin.com/hw1yuRKa的粘贴库

该输出值得注意的是像素数为Number pixels: 2.104M,对应于一页。但是,文件大小为 3.537MB,显然足以容纳所有页面。

根据请求,这里是pngcheck的输出:http://pastebin.com/aCRMEd9L

【问题讨论】:

运行“pngcheck -v algo-stroke.png”并显示结果。你可以从libpng.org/pub/png/apps/pngcheck.html 获取 pngcheck @GlennRanders-Pehrson 感谢您的建议,附上 pastebin 另外,这是可重现的,因此任何拥有 Mac 的人都可以在家中尝试。 aCTLfCTLpngcheck 的输出中 - 这些是 APNG 的标志...***.com/a/33432942/2836621 【参考方案1】:

PNG 不支持“多页”图像。

MNG 是一个支持多个图像的 PNG 变体 - 主要用于动画,但它不是真正的 PNG 图像(不同的签名/标题),并且从未流行过。

APNG 是一个类似的尝试,但更专注于动画 - 它更流行和活跃,虽然它不那么官方 - 它也兼容 PNG(标准的 PNG 查看器,不知道 APNG,会将其显示为单个 PNG 图像)。

另一种可能的解释是,您的图像实际上是带有错误.png 扩展名的 TIFF 图像,而查看器会忽略它。

确定的唯一方法是查看图像文件本身(至少到第一个字节)

更新:根据 pngcheck 输出,它似乎是一个 APNG 文件。

【讨论】:

感谢您的回复,我已更新帖子以显示fileimagemagickpngcheck 都证明这是一个PNG 文件。 APNG 旨在能够隐藏在常规 PNG 中。无法识别 APNG 块的应用程序(例如 ImageMagick)会将其作为常规的单图像 PNG 处理,并且只显示基本图像。

以上是关于PNG图像可以包含多个页面吗?的主要内容,如果未能解决你的问题,请参考以下文章

跨页打印大型数据帧

在页面上将 Highcharts 画布渲染为 PNG

我可以使用 CSS 制作多个背景图片吗?

swift - 如何在多个页面中快速缩放图像

如何在视图页面中使用Play框架和Scala显示图像

NuxtJS 中的预加载页面