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图标内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Pycharm如何添加源与添加库

    Pycharm如何添加源与添加库

    这篇文章主要介绍了Pycharm如何添加源与添加库问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • python自动12306抢票软件实现代码

    python自动12306抢票软件实现代码

    这篇文章主要为大家详细介绍了python自动12306抢票软件的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • 关于多元线性回归分析——Python&SPSS

    关于多元线性回归分析——Python&SPSS

    今天小编就为大家分享一篇关于多元线性回归分析——Python&SPSS,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • python中文编码与json中文输出问题详解

    python中文编码与json中文输出问题详解

    Python的编码问题还是很让人头疼的,做下笔记帮助别人,也帮助自己,下面这篇文章主要给大家介绍了关于python中文编码与json中文输出问题的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-08-08
  • Python PIL读取的图像发生自动旋转的实现方法

    Python PIL读取的图像发生自动旋转的实现方法

    这篇文章主要介绍了Python PIL读取的图像发生自动旋转的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Python代码连接到 Chat GPT API的方法

    Python代码连接到 Chat GPT API的方法

    Chat GPT 由于其独特、近乎准确且类似人类的响应,如今在互联网上引起了过多的讨论,本文讨论如何通过 Python 代码连接到 Chat GPT API,感兴趣的朋友一起看看吧
    2023-02-02
  • 使用Python和Spire.XLS轻松实现Excel到TXT数据转换

    使用Python和Spire.XLS轻松实现Excel到TXT数据转换

    在数据处理和分析的过程中,经常需要将不同格式的数据进行转换,Excel 文件是数据存储和操作中非常常见的格式,而 TXT 文件凭借其简单的文本格式,本文将介绍如何使用 Python 和 Spire.XLS 库将 Excel 导出为 TXT 文件,需要的朋友可以参考下
    2026-02-02
  • python机器学习之随机森林(七)

    python机器学习之随机森林(七)

    这篇文章主要为大家详细介绍了python机器学习之随机森林,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • NumPy 如何生成多维数组的方法

    NumPy 如何生成多维数组的方法

    这篇文章主要介绍了NumPy 如何生成多维数组的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • Python进阶之使用selenium爬取淘宝商品信息功能示例

    Python进阶之使用selenium爬取淘宝商品信息功能示例

    这篇文章主要介绍了Python进阶之使用selenium爬取淘宝商品信息功能,结合实例形式详细分析了Python使用selenium与requests模块爬取淘宝商品信息的相关操作技巧,需要的朋友可以参考下
    2019-09-09

最新评论