我正在創建一個腳本來抓取一羣favicons,將它們轉換爲png,並將它們全部製作爲一個精靈圖像。在PIL中創建PNG精靈,但想保留Alpha通道
樂於助人的g.etfv.co將檢測和轉換favicon的PNG格式,和我使用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)
你有任何與此運氣? –