Python结合Pillow库编写一个PNG转ICO图标工具(附源码)

 更新时间:2026年03月04日 09:23:31   作者:林九生  
这篇文章主要为大家详细介绍了一个Python工具,使用Pillow库将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 os

def 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

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

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

1.支持多尺寸 ICO:ICO 文件支持同时包含多种尺寸(16x16, 32x32, 64x64, 128x128),适用于不同分辨率。

img.save(ico_path, format='ICO', sizes=[(16,16), (32,32), (64,64), (128,128)])

2.命令行参数支持:可以使用 argparse 支持命令行输入路径:

python png_to_ico.py --input logo.png --output icon.ico

3.批量转换:遍历一个目录下所有 PNG 文件,批量转换为 ICO。

六、总结

本文介绍了如何使用 Python + Pillow 将 PNG 图片转换为 ICO 格式。

核心步骤包括:

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

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

适用场景

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

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

到此这篇关于Python结合Pillow库编写一个PNG转ICO图标工具(附源码)的文章就介绍到这了,更多相关Python PNG转ICO图标内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

最新评论