什么膨胀我的PNG?

背景:

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

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

使用pngcheck找出文件中的块是什么,它们有多大。 然后使用W3C PNG规范查找特定块的使用情况,并在必要时查找别处查找“私有数据”块。

除非您正在处理严重不标准的块,否则所有名称表示的块都不是“必需的”,都是可能的删除候选项。

链接地址: http://www.djcxy.com/p/20435.html

上一篇: What's bloating my png?

下一篇: Return json by default using ASP.NET Web API