1、ico是Iconfile的缩写,是Windows计算机中的一种图标文件格式,一般我们电脑桌面上显示的快捷方式就是这种格式的图标。一个ico文件实际上是多张不同尺寸图片的集合体,根据应用场景的不同自动选择合适的图片格式。
2、生成ico有两种方式
- 在线生成,有很多在线的网站可以直接生成ico图标
- 使用程序生成,如python的pythonMagic库
1 使用在线网站生成ico图标
1、在线网站生成ico图标比较简单,直接上传图片,然后选择输出图片尺寸即可,如下列出两个在线生成ico图标的网站
2 使用python的库包PythonMagick生成ico图片
1、Magick
是一个图像处理的库,支持多种图像格式的读取,以及其他操作,而且支持很多接口语言,如下:
2、Magick的官方网址:
- Magick的官方网址: https://imagemagick.org/script/index.php
- Magick支持的各种编程语言接口库包:https://imagemagick.org/script/develop.php
2.1 安装PythonMagick
1、下载PythonMagick
的whl
安装包(根据自己的python版本进行选择)
2.2 使用PythonMagick生成ico图片代码
PythonMagick生成ico图片很简单,就三行代码:
- image = PythonMagick.Image(image_path):读取图片数据
- image.sample(‘hxw’) :生成ico图片的尺寸(就是对图片做了resize操作)
- image.write(save_path):保存ico图片
from PIL import Image
import PythonMagick
def gen_ico_pill(image_path, resize=28, suffix='.png'):
save_path = image_path.replace(suffix, '_pil.ico')
image = Image.open(image_path)
image_resize = image.resize((resize, resize), Image.LANCZOS)
image_resize.save(save_path)
def gen_ico_magick(image_path, resize=28, suffix='.png'):
save_path = image_path.replace(suffix, '_magick.ico')
image = PythonMagick.Image(image_path)
image.sample(f'{resize}x{resize}') # 报错:RuntimeError: Magick: negative or zero image size `' @ error/image.c/CloneImage/811 # 是因为我没有给Image() 传入路径参数,laugh cry
image.write(save_path)
if __name__ == '__main__':
image_path = 'images/tree.png'
gen_ico_pill(image_path, resize=28, suffix='.png')
gen_ico_magick(image_path, resize=28, suffix='.png')
注意:我尝试使用pillow生成ico图片,但是生成的ico图片无论设置尺寸为多大,最终保存的ico图片大小都是16x16,不知道是为什么。。。
评论(0)
您还未登录,请登录后发表或查看评论