【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()
三、运行效果
- 将脚本保存为
png_to_ico.py
。 - 在同目录下放置一张
test.png
图片。 - 执行脚本:
python png_to_ico.py
执行成功后,会在 output/
目录下生成一个 favicon.ico
文件。
四、代码解析
- 导入库
from PIL import Image
用于图片加载和保存,支持 PNG、ICO、JPG 等多种格式。
- 图片模式转换
if img.mode != 'RGBA':img = img.convert('RGBA')
ICO 格式通常支持透明度,因此最好将图片转换为 RGBA
模式。
- 保存为 ICO
img.save(ico_path, format='ICO')
这里指定保存格式为 ICO
。
五、功能扩展(进阶优化)
当前脚本只是简单转换,我们可以进一步扩展功能:
- 支持多尺寸 ICO
ICO 文件支持同时包含多种尺寸(16x16, 32x32, 64x64, 128x128),适用于不同分辨率。
img.save(ico_path, format='ICO', sizes=[(16,16), (32,32), (64,64), (128,128)])
- 命令行参数支持
可以使用argparse
支持命令行输入路径:
python png_to_ico.py --input logo.png --output icon.ico
- 批量转换
遍历一个目录下所有 PNG 文件,批量转换为 ICO。
六、总结
本文介绍了如何使用 Python + Pillow 将 PNG 图片转换为 ICO 格式。
核心步骤包括:
- 使用
Image.open()
打开 PNG 图片; - 转换为
RGBA
模式保证透明度; - 使用
img.save(..., format='ICO')
保存为 ICO 文件。
此外,还可以扩展支持 多尺寸 ICO、命令行参数、批量转换 等功能,更加实用。
💡 适用场景:
- Windows 桌面应用图标
- Web 项目的 favicon.ico
- 软件安装包图标
这样,你就可以轻松生成 .ico
文件啦 🚀