我的png有什么膨胀?

时间:2014-05-16 00:18:53

标签: png metadata

背景

我正在努力制作尽可能小的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

1 个答案:

答案 0 :(得分:3)

230x230像素图像的原始像素数据不应该那么大,即使严重或根本没有压缩也是如此。因此,所有这些数据必须驻留在非标准PNG数据块中。

使用pngcheck找出文件中的块,以及它们有多大。然后使用W3C PNG Specifications找出特定块的使用情况,并在必要时在其他地方寻找私有数据"块。

除非您正在处理严重非标准块,否则所有name表示不是"必需",都可能被删除。