代码之家  ›  专栏  ›  技术社区  ›  toc777

减少PNG图像中的颜色会使文件大小变大

  •  1
  • toc777  · 技术社区  · 15 年前

    我正在使用ImageMagick通过减少图像中的颜色以编程方式减小PNG图像的大小。我得到图像的独特颜色,并将其除以2。然后我将这个值赋给-colors选项,如下所示:

    变量=唯一颜色/2

    convert image.png-颜色变量-深度8

    我原以为这会大大减小图像的大小,但它会增加磁盘上的图像大小。有人能解释一下这个吗?

    谢谢。

    编辑:发现问题是抖动。抖动有助于减少颜色的图像看起来更像原始图像,但会增加图像的大小。要删除ImageMagick中的抖动,请在命令中添加+抖动。 例子

    转换candybar.png+抖动-颜色300-深度8 smallercandybar.png

    3 回复  |  直到 15 年前
        1
  •  3
  •   Pasi Savolainen    15 年前

    ImageMagick可能会使用某种抖动算法使图像看起来像是有原始颜色一样。这增加了图像数据的“随机性”(在某些地方对单个像素重新着色以混合到其他颜色中),并且图像数据也不再打包。进一步研究 convert 命令执行抖动。您还可以通过在gimp/equivalent程序中添加第二个图像作为层并调整透明度来看到这种效果。

        2
  •  1
  •   Kornel    13 年前

    你应该使用 pngquant 为了这个。

    你不需要猜测颜色的数量,它有实际的 --quality 设置:

    pngquant --verbose --quality=70 image.png
    

    上面将自动选择与给定质量匹配所需的颜色数量,比例与jpeg质量相同(100=完美,70=确定,20=糟糕)。

    pngquant 具有更好的量化算法,量化效果越好,质量/文件大小比也越好。

    PNG定量 不会在不抖动的情况下抖动看起来不错的区域,这可以避免向文件添加不必要的噪声/随机性。

        3
  •  0
  •   Daniel    15 年前

    “新”PNG的压缩不如原来的压缩。