我正在编写一个WordPress插件来下载favicon并将它们转换为png:
http://plugins.trac.wordpress.org/browser/wp-favicons/trunk(GPL2)
在5.000个图标中的1个(其他图标正常工作......)XOR功能出现问题。请参阅此处的第296行: http://plugins.trac.wordpress.org/browser/wp-favicons/trunk/plugins/filters/inc/class.ico.php(注意:未初始化的字符串偏移量:64)因此预期的字符串太小。
一个例子就是这个图标:click here to see(导航到slatch.com)
有人知道如何解决这个问题吗?或者知道另一个好的PHP图标类让我通过get_as_string而不是get_from_file读取.ico(各种各样的)哪个更好?
我已经读过:
答案 0 :(得分:2)
您发布的示例图标是单色(1 BPP)。可能该库不支持如此低的颜色深度。
答案 1 :(得分:2)
我已经编写了一个完全经过单元测试的软件包,用于阅读支持1bpp图像的.ico文件(以及嵌入式PNG) - 它可以在这里找到https://github.com/lordelph/icofileloader
问题中。问题.ico的链接已经死了,但如果有人遇到类似的问题,我很乐意修复该软件包。
答案 2 :(得分:1)
@edelwater
我可能会弄错,但不是新一代的ICO文件真的PNG有不同的扩展名吗?这就是我过去创造它们的方式。我能理解将jpeg等其他格式转换为png然后更改扩展名。
http://en.wikipedia.org/wiki/Favicon#Standardization
http://en.wikipedia.org/wiki/ICO_(file_format)#PNG_format
这不是一个答案,而是一个参考。
答案 3 :(得分:0)
该类支持1 bpp(单色)ico文件。然而,它有一个错误。它无法将每个图像行的填充考虑到4字节(32位)边界,因此不能正确解码宽度小于32像素的图标。
我将修复此问题供我自己使用,但我不知道该如何处理它。在这里发贴补丁?