目录
可通过PIL库或PythonMagick库转换
PIL转换
from PIL import Image
import PythonMagick
def get_imgsize(imgne_path):
# 获取原图片的大小
img = Image.open(imgne_path)
x, y = img.size
del img
return x, y
def gen_ico_pill(image_path, suffix='.png'):
# 通过PIL库将图片转为ico格式
save_path = image_path.replace(suffix, '_pil.ico')
image = Image.open(image_path)
x, y = get_imgsize(image_path)
image.save(save_path, format='ICO', size=[x, y])
if __name__ == '__main__':
image_path = r'D:\zhuomian\test_file\Image\41.png'
gen_ico_pill(image_path, suffix='.png')
PythonMagick转换
PythonMagick库的安装:如果pip install PythonMagick安装失败,可通过下载对应的python二进制文件安装
下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#

from PIL import Image
import PythonMagick
def get_imgsize(imgne_path):
# 获取原图片的大小
img = Image.open(imgne_path)
x, y = img.size
del img
return x, y
# 设置一个参数multiple,作为生成ICO图片的放大倍数,只能小于等于1,若报错:RuntimeError: Magick: width or height exceeds limit `D:\zhuomian\test_file\bird_magick.ico' @ error/icon.c/WriteICONImage/931,可缩小倍数
def gen_ico_magick(image_path, multiple=1, suffix='.png'):
# 通过PythonMagick库将图片转为ico格式
save_path = image_path.replace(suffix, '_magick.ico')
image = PythonMagick.Image(image_path)
x, y = get_imgsize(image_path)
image.sample(f'{int(x * multiple)}x{int(y * multiple)}')
image.write(save_path)
if __name__ == '__main__':
image_path = r'D:\zhuomian\test_file\Image\41.png'
gen_ico_magick(image_path, multiple=0.2, suffix='.png')
两种装换方法可优化,通过获取图片文件后缀自动匹配的文件后缀(代码中的suffix参数),而不用写死,这里不做演示。
本文介绍了如何使用Python的PIL库和PythonMagick库将图片文件转换为ico格式。详细讲解了两个库的转换过程,并提到了PythonMagick的安装方法,以及如何通过获取图片后缀进行自动匹配,但未展示具体实现代码。
1157

被折叠的 条评论
为什么被折叠?



