gpt4 book ai didi

png - 是什么让我的 png 膨胀?

转载 作者:行者123 更新时间:2023-12-04 12:41:10 26 4
gpt4 key购买 nike

背景:

我正在努力使一堆 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

最佳答案

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

使用pngcheck找出文件中有哪些 block ,以及它们有多大。然后使用 W3C PNG Specifications找出特定 block 的使用,并在必要时在其他地方寻找“私有(private)数据” block 。

除非你正在处理一个非常不标准的 block ,否则所有的 name指示不是“必需的”,可能是删除的候选对象。

关于png - 是什么让我的 png 膨胀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23690745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com