我正在创建一个脚本来抓取一堆favicon,将它们转换为png并从其中生成一个精灵图像。
有用的g.etfv.co将检测并转换PNG格式的favicons,我正在使用PIL将图像蒙太奇用于精灵表。
这一切都很好,除非我这样做时似乎失去了alpha透明度通道。
以下脚本生成的图像:。注意应该是透明的黑色区域。
更新:现在以'RGBA'模式创建图像而不是'RGB'。生成的图像现在仅部分 borked:。 OKCupid的图标看起来正确但是stackoverflow仍在丢失alpha通道。
更新:我注意到,在转换之前它会混淆的图像报告为RGB(不是RGBA)。
>>> print url, img.getbands()
http://stackoverflow.com/ ('R', 'G', 'B')
http://www.google.com/ ('R', 'G', 'B')
http://blog.okcupid.com/ ('R', 'G', 'B', 'A')
我做错了什么?
import urllib
import PIL.Image
import StringIO
favicon_base = 'http://g.etfv.co/'
icons = """
http://stackoverflow.com/
http://www.google.com/
http://blog.okcupid.com/
"""
icons = [icon.strip() for icon in icons.strip().splitlines()]
left = 0
right = 16
upper = 0
lower = 16
inew = PIL.Image.new('RGBA',(len(icons)*16,16))
for url in icons:
favicon = urllib.urlopen(favicon_base + urllib.quote(url) + '?defaulticon=lightpng').read()
img = PIL.Image.open(StringIO.StringIO(favicon))
img = img.convert('RGBA')
bbox = (left, upper, right, lower)
inew.paste(img, bbox, img)
left += 16
right += 16
inew.save(open('blah.png', 'wb'), 'png', optimize=1)
答案 0 :(得分:0)
结果图片inew
没有Alpha频道。
更新:
陷阱>
inew = PIL.Image.new('RGBA',(len(icons)*16,16))