如何使用Pillow保存指定尺寸的.ico格式图片
解决Pillow保存ICO图标尺寸固定为16x16的问题
问题根因
Pillow保存ICO格式文件时,默认使用16x16作为导出尺寸,提前对图像执行resize操作仅会修改图像的像素内容,不会修改ICO格式的导出配置,因此会出现预览时图像缩小、实际文件尺寸仍为16x16的问题。
解决方法
调用save方法时新增sizes参数,参数值为需要导出的图标尺寸组成的列表:
- 单尺寸ICO直接传入包含对应尺寸元组的列表即可
- 多尺寸ICO可在列表中加入所有需要的尺寸元组,Pillow会自动生成包含多规格的图标文件
可选优化:若原图包含透明通道,可提前将图像转为RGBA模式,避免导出后透明区域显示异常。
修改后参考代码
import base64 import io from PIL import Image image_byte = b"image_bytes" b = base64.b64decode(image_byte) # 转RGBA模式保证透明通道正常显示,无透明需求可省略convert步骤 image = Image.open(io.BytesIO(b)).convert('RGBA') new_image = image.resize((40, 40)) # 保存时指定导出尺寸 new_image.save(icon_path, sizes=[(40, 40)])
内容的提问来源于stack exchange,提问作者Flu_Py Developer
相关产品推荐
相关产品推荐

