Python实现普通图片转ico图标的方法详解
作者:玩转测试开发 发布时间:2023-08-13 07:09:36
标签:Python,图片,ico,图标
简介
ICO是一种图标文件格式,图标文件可以存储单个图案、多尺寸、多色板的图标文件。一个图标实际上是多张不同格式的图片的集合体,并且还包含了一定的透明区域。它是图标文件格式的一种,可以存储单个图案、多尺寸、多色板的图标文件。图标是具有明确指代含义的计算机图形。其中桌面图标是软件标识,界面中的图标是功能标识。
历史攻略
pip安装第三方库全攻略:普通安装、安装whl后缀文件、使用国内镜像安装
下载安装包
确认你的python版本,如:python,显示为3.8.2则下载cp38相关的文件名称,如:PythonMagick‑0.9.19‑cp38‑cp38‑win_amd64.whl
下载地址
https://www.lfd.uci.edu/~gohlke/pythonlibs/#pythonmagick
安装后缀pythonmagick - whl文件
pip install PythonMagick-0.9.19-cp38-cp38-win_amd64.whl
案例源码
# -*- coding: utf-8 -*-
# time: 2022/11/22 18:08
# file: football-demo.py
# 公众号: 玩转测试开发
from PIL import Image
import PythonMagick
def gen_ico_pill(image_path, resize=50, 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=50, suffix='.png'):
save_path = image_path.replace(suffix, '_magick.ico')
image = PythonMagick.Image(image_path)
image.sample(
f'{resize}x{resize}')
image.write(save_path)
if __name__ == '__main__':
image_path = r'D:\codes\devopsPro\ai\football.png'
gen_ico_pill(image_path, resize=50, suffix='.png')
gen_ico_magick(image_path, resize=50, suffix='.png')
效果图
运行完成后的保存效果:左侧为ico,右侧为原图。
即:例如网站logo,图标等也会经常使用 ico 格式图片。通过python - PythonMagick和PIL则可以快速的生成原图的 ico 格式图标。
来源:https://mp.weixin.qq.com/s/Qo7n4zGGkcOGhxxW6fStiA


猜你喜欢
- 本周的PyCoder's Weekly 上分享了一篇小文章,它里面提到的冷知识很有意思,我稍作补充,分享给大家。它提到的部分问题,读
- 本文实例讲述了Django框架文件上传与自定义图片上传路径、上传文件名操作。分享给大家供大家参考,具体如下:文件上传1、创建上传文件夹在st
- 矩阵增加行np.row_stack() 与 np.column_stack()import numpy as npa = np.array(
- 本文实例讲述了Python实现查找数组中任意第k大的数字算法。分享给大家供大家参考,具体如下:模仿partion方法,当high=low小于
- webargs是一个用于解析和验证HTTP请求对象的Python库,内置了对流行web框架的支持,包括Flask、Django、Bottle
- 先说结论:变量赋值属于浅拷贝(关于深拷贝和浅拷贝的区别可以自己了解下)。故如果是可变类型变量(如a是list类型,a=b)赋值,修改a会牵连
- 一 前期说明:我运行项目的环境是nginx+php,存储代码用的是gitlab,python版本:3.6 django版本:2.2.1 my
- 想实现发送邮件需要经过以下几步:1、登录邮件服务器2、构造符合邮件协议规则要求的邮件内容3、发送Python对SMTP支持有smtplib和
- import socketdef open_tcp_socket(remotehost,servicename): &
- 代码import requestsimport timefrom tqdm import tqdmfrom bs4 import Beaut
- 为什么能实现在线编辑呢? 首先需要ie 的支持,在 ie 5.5以后就有一个编辑状态,就是利用这个编辑状态,然后用javascript 来控
- Base64编码的深入认识与理解 之前在很多业务中都有见过或者用到过Base64编码,但一直一知半解,没有对它有一个深入的认识和
- LOAD DATA INFILE '文件地址' INTO TABLE 表名 FIELDS TERMINATED BY
- Asyncio 任务可以通过调用它们的 cancel() 方法来取消。我们可以通过将任务包装在对 asyncio.shield() 的调用中
- 前言APScheduler是基于Quartz的一个Python定时任务框架。提供了基于日期、固定时间间隔以及crontab类型的任务,并且可
- 对于英文不行我来说使用英文版PyCharm实在是太难受了,网上好多汉化补丁都是网友提供了,下面为大家介绍一种PyCharm官方中文语言包汉化
- Python正则表达式中的'r'最近遇到一个非常困惑的地方,那就是在使用Python中的正则表达式的时候,正则表达式前面的&
- 前言:经过上一篇JavaScript 数据结构之集合创建(2)的学习,数据结构的集合部分已经完结了。那么下面我们又要认识一个新的数
- 1、简述asp的6个内置对象和其功能答案 : session ,server ,response,request,objectcontext
- 本文实例讲述了JS数组中对象去重操作。分享给大家供大家参考,具体如下:<!DOCTYPE html><html lang=