【问题标题】:How can you tell png8 from a png24如何从 png24 中区分 png8
【发布时间】:2010-09-22 08:41:57
【问题描述】:

我正在开发一个使用大量 png24 文件的网站,以提高透明度。

我需要用 png8 文件替换它们,因为 png24 的所有 png 修复样式 javascript 变通方法会导致 IE6 随机锁定。

查看此链接以了解 IE6 显示的症状 - http://blogs.cozi.com/tech/2008/03/transparent-pngs-can-deadlock-ie6.html

有没有人知道一种简单的方法来定位现有的 png24 文件,用 png8s 替换它们?

我使用的是 OS X,而 Adob​​e Bridge 等文件浏览器不显示此信息,我也无法在命令行或查找器上找到信息。

救命!

【问题讨论】:

    标签: graphics png photoshop png-24 png-8


    【解决方案1】:

    OSX 上的 file 实用程序可以告诉您 PNG 文件中的颜色深度,例如:

    % file foo.png 
    foo.png: PNG image data, 1514 x 1514, 8-bit grayscale, non-interlaced
    

    【讨论】:

      【解决方案2】:

      您实际上可以在 PNG-8 中获得 alpha 透明度,但它非常复杂。 http://www.sitepoint.com/blogs/2007/09/18/png8-the-clear-winner/ http://www.personal.psu.edu/drs18/blogs/davidstong/2007/09/png8_alpha_transparency_from_f.html

      它基本上为 IE6 创建了类似 GIF 的内容,并为更好的浏览器创建了具有 alpha 透明度的真正 PNG。这是一条更令人愉快的退化路径。现在,我认为您需要 Fireworks,但我正在探索其他选择。

      【讨论】:

        【解决方案3】:

        添加到 Alnitak 的答案中,一旦找到所有要转换的 PNG24,就可以使用 pngquant 对它们进行批处理:

        pngquant -v -f --ext .png 256 *.png
        

        这会将所有 PNG 文件原地转换为 PNG8,并覆盖它们。

        【讨论】:

        • 请注意,这会将 32 位 RGBA PNG 转换为 8 位 或更小 RGBA 调色板 PNG。您可以通过运行pngcheck *.png 来检查调色板。如果您出于某种原因绝对需要 8 位调色板,请参阅 this answer
        • @MathiasBynens AFAIK ImageMagick 也进行颜色计数,因此(除了较低的质量)当图像最终只需要 4 或 2 位时,它与 pngquant 没有任何不同。
        • 在发表我之前的评论之前,我已经对此进行了测试。 This example image 使用 convert 从 32 位 RGB+alpha 转换为 8 位调色板,而 pngquant 将其优化为 4 位调色板。 (在 99% 的情况下都是可取的,但是我有一个奇怪的用例,我需要一个正好是 8 位的调色板。)
        【解决方案4】:

        我想你可能问错了问题。 PNG8 没有您在 IE6 中努力修复的真正 alpha。如果您将 PNG24 替换为 PNG8,那么您也不会比将它们替换为 GIF 更好。

        也许您可以测试一个替代的替换/修复脚本 - 那里有一些非常糟糕的脚本,也许这就是问题所在?

        这是(我说这个舌头在脸颊!)the right question

        【讨论】:

        • PNG-8 实际上支持为味觉上的每种颜色存储一个 alpha 值,因此,通过正确的程序和优化,它们可以看起来很棒。查看其他答案之一。
        • PNG8 与 GIF 不同,因为 PNG8 可以存储半透明像素,而 GIF 则不能。 Photoshop 没有这个能力(尝试保存为 Web 时),但是当你使用 Fireworks 导出为 PNG8 时就很清楚了。
        【解决方案5】:

        JoeBloggs 是对的,你问错问题了。

        我从来没有用一个好的 pngfix 脚本让 IE6 崩溃。你要么有一个糟糕的 pngfix 脚本,要么是一个糟糕的 IE6 安装。

        PNG8 会破坏你漂亮的透明胶片,让它看起来像是在使用 GIF。

        【讨论】:

          【解决方案6】:

          pngcheck,一个命令行工具,可以转储你需要的信息。 http://www.libpng.org/pub/png/apps/pngcheck.html

          pngcheck.exe a.png
          OK: a.png (1024x1024, 32-bit RGB+alpha, non-interlaced, 80.7%).
          
          pngcheck.exe b.png
          OK: b.png (1024x1024, 8-bit palette+trns, non-interlaced, 83.1%).
          

          【讨论】:

            【解决方案7】:

            也许imagemagick 可以帮助您将 png24 文件转换为 png8 文件。

            【讨论】:

              猜你喜欢
              • 2014-05-07
              • 2020-06-15
              • 2019-12-24
              • 2011-03-12
              • 1970-01-01
              • 1970-01-01
              • 2011-05-04
              • 2014-01-05
              • 2012-01-17
              相关资源
              最近更新 更多