我有一个任何大小的源文件image.ico
,并且想要创建缩略图。这是我现在正在使用的代码:
converted_file = cStringIO.StringIO()
thumb = ImageOps.fit(image, (width, height), Image.ANTIALIAS)
thumb.save(converted_file, format='png')
我选择png
作为扩展名,因为PIL不支持可能是罪魁祸首的ico
文件。它的工作原理是不应用透明度。 alpha = 0的部分呈现黑色而不是透明。我该如何解决这个问题?
/修改
我也试过(see this answer):
converted_file = cStringIO.StringIO()
thumb = ImageOps.fit(image, (width, height), Image.ANTIALIAS)
background = Image.new('RGBA', (width, height), (255, 255, 255, 0))
background.paste(thumb, box = (0, 0, width, height))
background.save(converted_file, format='png')
同样的效果。
答案 0 :(得分:1)
问题确实是PIL不知道如何准确读取ICO文件。如何解决这个问题有两种可能性:
我选择使用Pillow,它也兼容Python 3并且有更多好处。
将Win32IconImagePlugin保存在项目的某个位置。导入PIL Image类后,导入插件以注册ICO支持:
from PIL import Image
import Win32IconImagePlugin
你去了,现在你可以使用正确的格式:
thumb.save(converted_file, format='ico')
Pillow 有builtin support for ICO images。
只需移除pil并安装枕头:
pip uninstall pil
pip install pillow
请务必更改所有全球进口商品:
import Image, ImageOps
到
from PIL import Image, ImageOps
你去了,现在你可以使用正确的格式:
thumb.save(converted_file, format='ico')