【发布时间】:2014-07-04 15:20:07
【问题描述】:
背景:
我正在努力使一堆 PNG 尽可能小。我正在使用 PngOut、PngCrush 和 OptiPng 等工具。
问题:
我遇到了一个大小为 1434 KB 但只有 230 x 230 像素的文件。当我在 Paint.Net 中打开文件并将其另存为新文件时,新文件只有 77 KB。那里有高达 1.325 MB 的额外垃圾!
目标:
我想了解究竟是什么导致文件膨胀,以及如何在遇到这种膨胀时自动消除这种膨胀,并且无法实现这两个目标。 OptiPng 不会删除元数据。
进展:
我发现exiftool 看起来非常棒,但它没有显示任何疯狂的标签。
RIOT 可以在没有额外数据的情况下生成新版本的图像,但它并没有给我任何关于膨胀是什么的可靠线索——它绝对不是 XMP 信息或评论(我可以选择的唯一元数据)包括)。但是 RIOT 会自动强制删除 IPTC 信息和 EXIF 配置文件——它可能是其中之一吗?
期望的反馈
感谢您对如何以编程方式或自动无损地粉碎和删除 PNG(以及就此而言,其他图像类型)中的元数据的想法。但是,我不想在不了解文件内容的情况下就丢弃文件中的信息。
更新
我找到了Steel Bytes Jpeg & PNG Stripper,它确实从文件中剥离了元数据(并且具有命令行模式),生成了一个 84 KB 的文件,然后我可以对其进行 PNG 优化,但这仍然不能帮助我理解什么我正在删除,我觉得在继续之前我需要了解。我不需要获得许可来优化在面向公众的生产网站中使用的这些图像,但在进行此类更改之前,我确实需要对自己正在做的事情充满信心。
更新 2
我没有注意到 OptiPng 有一个选项 -strip all,它可以去除元数据。这远比 Steel Bytes Stripper 好,因为它有更多选项可用于原始文件的备份处理——保留备份,或将优化后的文件输出到新位置。它还可以同时优化PNG的图像数据,只需要一个工具而不是两个。
附录
这是exiftool -a -G [file.png] 显示的内容:
[ExifTool] ExifTool Version Number : 9.60
[File] File Name : file.png
[File] Directory : .
[File] File Size : 1446 kB
[File] File Modification Date/Time : 2014:03:31 16:37:20-07:00
[File] File Access Date/Time : 2014:05:15 15:47:53-07:00
[File] File Creation Date/Time : 2014:05:15 15:47:53-07:00
[File] File Permissions : rw-rw-rw-
[File] File Type : PNG
[File] MIME Type : image/png
[PNG] Image Width : 230
[PNG] Image Height : 230
[PNG] Bit Depth : 8
[PNG] Color Type : RGB with Alpha
[PNG] Compression : Deflate/Inflate
[PNG] Filter : Adaptive
[PNG] Interlace : Noninterlaced
[PNG] Significant Bits : 8 8 8 8
[PNG] Pixels Per Unit X : 2834
[PNG] Pixels Per Unit Y : 2834
[PNG] Pixel Units : Meters
[PNG] Creation Time : 3/31/14
[PNG] Software : Adobe Fireworks CS6
[XMP] XMP Toolkit : Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27
[XMP] Creator Tool : Adobe Fireworks CS6 (Macintosh)
[XMP] Create Date : 2012:10:24 19:01:30Z
[XMP] Modify Date : 2014:03:31 23:34:45Z
[XMP] Format : image/png
[Composite] Image Size : 230x230
【问题讨论】:
-
你能扩展你的“没有疯狂的标签”吗? 230 x 230 x 4 = 206.6Kb,即使使用最糟糕的可想象压缩也无法扩展这么多。
pngcheck应该是个好工具。最有可能的候选者:单个大型颜色配置文件(gAma、cHRM或iCCP)。 -
@Jongware 查看附录——这是 exiftool 为文件中的元数据标签提供的完整输出。我会调查 pngcheck。谢谢!
-
"Exif" 只是 PNG 元数据的一小部分;一种“摘要”,用于可能需要以易于理解的格式提供的软件。
pngcheck将暴露你 PNG 的原始内容。只有非常几个数据块实际上是必需的。 -
@Jongware 请发表您的建议以使用
pngcheck作为答案,所以我可以接受它——它告诉我额外的数据是什么(“Macromedia Fireworks 私有、辅助、不安全-复制块”)。