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

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

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

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

我正在使用OS X,像Adobe桥这样的文件浏览器不会显示此信息,也无法在命令行或查找程序中找到信息。

帮助!

有帮助吗?

解决方案

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

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

其他提示

你实际上可以在PNG-8中获得alpha透明度,但它非常复杂。 http://www.sitepoint.com/blogs / 2007/09/18 / PNG8最明确的赢家/ http://www.personal.psu.edu/ drs18 /博客/ davidstong / 2007/09 / png8_alpha_transparency_from_f.html

它基本上为IE6创建了像GIF一样的实体,并为更好的浏览器创建了具有alpha透明度的真实PNG。这是一个更愉快的退化路径。现在,我认为你需要Fireworks,但我正在探索其他选择。

要添加到Alnitak <!>#8217;的答案,一旦找到要转换的所有PNG24,您可以使用pngquant批量处理它们:

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

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

我想你可能会问错误的问题。 PNG8没有你在IE6中努力修复的真正的alpha。如果用PNG8替换PNG24,那么用GIF替换PNG24并不比我们好。

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

这是(我在脸颊上说这句话!)正确的问题

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

我从来没有让IE6打破一个好的pngfix脚本。你有一个糟糕的pngfix脚本,或者IE6安装不好。

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

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%).

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top