【问题标题】:How do I improve the compressibility of my PNG images? [closed]如何提高 PNG 图像的可压缩性? [关闭]
【发布时间】:2013-05-11 04:51:12
【问题描述】:

我想知道如何确保 PNG 图像具有良好的可压缩性。请注意,我不是在问如何很好地压缩 PNG 图像(使用 pngcrush 之类的工具),而是如何确保 PNG 中的图像内容更容易压缩。

我的问题与减少大规模图像生成系统中的存储空间需求有关。

该项目将构建和存储用户生成的图像(想像一个头像创建者),因此输出的源片段在我们的控制之下。合成的 PNG 输出文件将在服务器端生成并存储在云存储服务中。

每月生成图像的上限估计数以百万计,因此每个字节都很重要。

在创建将进入合成输出图像以确保良好压缩性的原始片段时,我们是否可以考虑任何事情?

例如...颜色重要吗?源图像数据中是否存在产生较大输出的好颜色渐变和坏颜色渐变?重度抗锯齿是好是坏?是否有有损方法来处理源图像以提高 PNG 可压缩性?

一般来说,首先在创建图像时是否有任何节省字节的提示?

【问题讨论】:

  • 如果您愿意更改图像,那么为什么不使用有损压缩方法,例如JPEG?您可以拨入您认为可以接受的最高压缩级别。
  • 因为我需要在输出中使用 alpha 透明度。
  • 离题? FAQ 允许提出涵盖特定编程问题的问题。它们不需要源代码。我的问题与减少大规模图像生成系统中的存储空间需求有关。它面向可能了解 PNG 文件格式操作的人。如果这不是特定主题的编程问题,那么我不知道是什么。

标签: image-processing graphics bitmap compression png


【解决方案1】:

图像中的许多“独特”区域会增加文件大小。因此,确保更好压缩的一种方法是在图像中有许多相似甚至相同的区域。例如,如果您的图像包含主题,请尝试确保背景为纯白色或黑色。还可以尝试通过合并或模糊来减少图像中的颜色数量,以达到您的应用程序要求可以容忍的程度。希望这会有所帮助。

【讨论】:

    【解决方案2】:

    PNG 压缩基于局部(一个像素邻域)预测,然后是 ZLIB 压缩。因此,如果我们正在处理真彩色 (RGB) 图像,您需要很多均匀的区域,最好在水平或垂直方向上,或者非常平滑,以便预测误差很小。图像很少有颜色也有帮助,因为这样会重复预测错误(Zlib 会很好地压缩它)。 正因为如此,一个简单的方法来预处理 PNG 真彩色图像以保存 PNG 是 posterizing 它。 当然,如果您的颜色真的很少,您可以将其保存为索引(调色板)PNG,这将使图像明显更小,并且之前的考虑(局部平滑度)不那么重要。 因此,这个问题很复杂。

    重度抗锯齿是好是坏?

    抗锯齿与 JPEG 配合得很好,而 PNG 则很难说:它使图像更平滑,但会产生更多颜色。

    正如一条评论所说,如果您容忍有损压缩(并且如果您不需要 alpha),您通常会更喜欢 JPEG。

    【讨论】:

      猜你喜欢
      • 2013-12-28
      • 1970-01-01
      • 2012-08-22
      • 1970-01-01
      • 2013-04-17
      • 2012-09-02
      • 2011-02-12
      • 2010-10-21
      • 1970-01-01
      相关资源
      最近更新 更多