当前位置: 首页 > ops >正文

【Python】Python 实现 PNG 转 ICO 图标转换工具

Python 实现 PNG 转 ICO 图标转换工具(附完整源码)

在日常开发中,我们经常会遇到需要将 PNG 图片 转换为 ICO 图标 的情况。例如:

  • Windows 应用开发 中需要 .ico 文件作为程序图标。
  • 网站开发 中需要生成 favicon.ico
  • 桌面应用 打包时(如 PyQt、Tkinter)常常需要 .ico 文件来设置应用图标。

本文将介绍如何用 Python + Pillow 库 编写一个 PNG 转 ICO 工具,并提供完整源码和运行说明。


一、环境准备

首先需要安装 Python 的 Pillow 库,这是一个非常强大的图像处理库。

pip install pillow

二、完整源码

下面给出一个功能完善的 png_to_ico.py 脚本,可以方便地将 PNG 图片转换为 ICO 文件。

from PIL import Image
import osdef png_to_ico(png_path, ico_path):"""将PNG图片转换为ICO格式Args:png_path (str): 原始PNG图片路径ico_path (str): 生成ICO图片路径"""try:# 打开PNG图片with Image.open(png_path) as img:# 转换为RGBA模式(支持透明度)if img.mode != 'RGBA':img = img.convert('RGBA')# 保存为ICO格式img.save(ico_path, format='ICO')print(f"转换成功:{png_path} -> {ico_path}")except FileNotFoundError:print(f"错误:找不到文件 {png_path}")except Exception as e:print(f"转换失败:{e}")def main():# 修改这里,填入你的PNG路径和输出ICO路径png_path = r"test.png"ico_path = r"output/favicon.ico"# 检查输入文件是否存在if not os.path.exists(png_path):print(f"错误:输入文件不存在 {png_path}")return# 确保输出目录存在output_dir = os.path.dirname(ico_path)if output_dir and not os.path.exists(output_dir):os.makedirs(output_dir)# 执行转换png_to_ico(png_path, ico_path)if __name__ == "__main__":main()

三、运行效果

  1. 将脚本保存为 png_to_ico.py
  2. 在同目录下放置一张 test.png 图片。
  3. 执行脚本:
python png_to_ico.py

执行成功后,会在 output/ 目录下生成一个 favicon.ico 文件。


四、代码解析

  1. 导入库
from PIL import Image

用于图片加载和保存,支持 PNG、ICO、JPG 等多种格式。

  1. 图片模式转换
if img.mode != 'RGBA':img = img.convert('RGBA')

ICO 格式通常支持透明度,因此最好将图片转换为 RGBA 模式。

  1. 保存为 ICO
img.save(ico_path, format='ICO')

这里指定保存格式为 ICO


五、功能扩展(进阶优化)

当前脚本只是简单转换,我们可以进一步扩展功能:

  1. 支持多尺寸 ICO
    ICO 文件支持同时包含多种尺寸(16x16, 32x32, 64x64, 128x128),适用于不同分辨率。
img.save(ico_path, format='ICO', sizes=[(16,16), (32,32), (64,64), (128,128)])
  1. 命令行参数支持
    可以使用 argparse 支持命令行输入路径:
python png_to_ico.py --input logo.png --output icon.ico
  1. 批量转换
    遍历一个目录下所有 PNG 文件,批量转换为 ICO。

六、总结

本文介绍了如何使用 Python + Pillow 将 PNG 图片转换为 ICO 格式。
核心步骤包括:

  1. 使用 Image.open() 打开 PNG 图片;
  2. 转换为 RGBA 模式保证透明度;
  3. 使用 img.save(..., format='ICO') 保存为 ICO 文件。

此外,还可以扩展支持 多尺寸 ICO命令行参数批量转换 等功能,更加实用。


💡 适用场景

  • Windows 桌面应用图标
  • Web 项目的 favicon.ico
  • 软件安装包图标

这样,你就可以轻松生成 .ico 文件啦 🚀

http://www.xdnf.cn/news/18950.html

相关文章:

  • LightGBM 在金融逾期天数预测任务中的经验总结
  • Qt自定义聊天消息控件ChatMessage:初步实现仿微信聊天界面
  • Linux之Shell编程(一)
  • Linux笔记12——shell编程基础-6
  • Swift 解法详解 LeetCode 365:水壶问题
  • Java -- 文件基础知识--Java IO流原理--FileReader
  • 了解ADS中信号和电源完整性的S参数因果关系
  • hintcon2025 Verilog OJ
  • 【python】python进阶——生成器
  • 数据结构01:顺序表
  • 次元小镇官网入口 - 二次元动漫社区|COS绘画插画壁纸分享
  • [数据结构] ArrayList与顺序表(下)
  • STM32——PWR
  • 机器视觉学习-day06-图像旋转
  • KafKa学习笔记
  • 【Day 35】Linux-Mysql错误总结
  • DA14531(Cortex-M0+)之Wake-up Interrupt Controller (WIC)
  • React学习教程,从入门到精通, ReactJS - 安装:初学者指南(3)
  • linux 网络:并发服务器及IO多路复用
  • 如何将yolo训练图像数据库的某个分类的图像取出来
  • element-plus的el-scrollbar显示横向滚动条
  • 使用华为 USG6000防火墙配置安全策略
  • 传输层协议介绍
  • 企业通讯软件以安全为基,搭建高效的通讯办公平台
  • Python篇---返回类型
  • 【论文阅读】PEPNet
  • amis上传组件导入文件接口参数为base64格式的使用示例
  • 计算机三级嵌入式填空题——真题库(22)原题附答案速记
  • 强化学习与注意力机制的AlignSAM框架解析
  • 微算法科技(NASDAQ:MLGO)推出创新型混合区块链共识算法,助力物联网多接入边缘计算