Python結(jié)合Pillow庫編寫一個(gè)PNG轉(zhuǎn)ICO圖標(biāo)工具(附源碼)
在日常開發(fā)中,我們經(jīng)常會(huì)遇到需要將 PNG 圖片 轉(zhuǎn)換為 ICO 圖標(biāo) 的情況。例如:
- 在 Windows 應(yīng)用開發(fā) 中需要
.ico文件作為程序圖標(biāo)。 - 在 網(wǎng)站開發(fā) 中需要生成
favicon.ico。 - 在 桌面應(yīng)用 打包時(shí)(如 PyQt、Tkinter)常常需要
.ico文件來設(shè)置應(yīng)用圖標(biāo)。
本文將介紹如何用 Python + Pillow 庫 編寫一個(gè) PNG 轉(zhuǎn) ICO 工具,并提供完整源碼和運(yùn)行說明。
一、環(huán)境準(zhǔn)備
首先需要安裝 Python 的 Pillow 庫,這是一個(gè)非常強(qiáng)大的圖像處理庫。
pip install pillow
二、完整源碼
下面給出一個(gè)功能完善的 png_to_ico.py 腳本,可以方便地將 PNG 圖片轉(zhuǎn)換為 ICO 文件。
from PIL import Image
import os
def png_to_ico(png_path, ico_path):
"""
將PNG圖片轉(zhuǎn)換為ICO格式
Args:
png_path (str): 原始PNG圖片路徑
ico_path (str): 生成ICO圖片路徑
"""
try:
# 打開PNG圖片
with Image.open(png_path) as img:
# 轉(zhuǎn)換為RGBA模式(支持透明度)
if img.mode != 'RGBA':
img = img.convert('RGBA')
# 保存為ICO格式
img.save(ico_path, format='ICO')
print(f"轉(zhuǎn)換成功:{png_path} -> {ico_path}")
except FileNotFoundError:
print(f"錯(cuò)誤:找不到文件 {png_path}")
except Exception as e:
print(f"轉(zhuǎn)換失敗:{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"錯(cuò)誤:輸入文件不存在 {png_path}")
return
# 確保輸出目錄存在
output_dir = os.path.dirname(ico_path)
if output_dir and not os.path.exists(output_dir):
os.makedirs(output_dir)
# 執(zhí)行轉(zhuǎn)換
png_to_ico(png_path, ico_path)
if __name__ == "__main__":
main()
三、運(yùn)行效果
- 將腳本保存為
png_to_ico.py。 - 在同目錄下放置一張
test.png圖片。 - 執(zhí)行腳本:
python png_to_ico.py
執(zhí)行成功后,會(huì)在 output/ 目錄下生成一個(gè) favicon.ico 文件。
四、代碼解析
導(dǎo)入庫
from PIL import Image
用于圖片加載和保存,支持 PNG、ICO、JPG 等多種格式。
圖片模式轉(zhuǎn)換
if img.mode != 'RGBA':
img = img.convert('RGBA')
ICO 格式通常支持透明度,因此最好將圖片轉(zhuǎn)換為 RGBA 模式。
保存為 ICO
img.save(ico_path, format='ICO')
這里指定保存格式為 ICO。
五、功能擴(kuò)展(進(jìn)階優(yōu)化)
當(dāng)前腳本只是簡(jiǎn)單轉(zhuǎn)換,我們可以進(jìn)一步擴(kuò)展功能:
1.支持多尺寸 ICO:ICO 文件支持同時(shí)包含多種尺寸(16x16, 32x32, 64x64, 128x128),適用于不同分辨率。
img.save(ico_path, format='ICO', sizes=[(16,16), (32,32), (64,64), (128,128)])
2.命令行參數(shù)支持:可以使用 argparse 支持命令行輸入路徑:
python png_to_ico.py --input logo.png --output icon.ico
3.批量轉(zhuǎn)換:遍歷一個(gè)目錄下所有 PNG 文件,批量轉(zhuǎn)換為 ICO。
六、總結(jié)
本文介紹了如何使用 Python + Pillow 將 PNG 圖片轉(zhuǎn)換為 ICO 格式。
核心步驟包括:
- 使用
Image.open()打開 PNG 圖片; - 轉(zhuǎn)換為
RGBA模式保證透明度; - 使用
img.save(..., format='ICO')保存為 ICO 文件。
此外,還可以擴(kuò)展支持 多尺寸 ICO、命令行參數(shù)、批量轉(zhuǎn)換 等功能,更加實(shí)用。
適用場(chǎng)景:
- Windows 桌面應(yīng)用圖標(biāo)
- Web 項(xiàng)目的 favicon.ico
- 軟件安裝包圖標(biāo)
這樣,你就可以輕松生成 .ico 文件啦
到此這篇關(guān)于Python結(jié)合Pillow庫編寫一個(gè)PNG轉(zhuǎn)ICO圖標(biāo)工具(附源碼)的文章就介紹到這了,更多相關(guān)Python PNG轉(zhuǎn)ICO圖標(biāo)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python自動(dòng)12306搶票軟件實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了python自動(dòng)12306搶票軟件的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02
Python PIL讀取的圖像發(fā)生自動(dòng)旋轉(zhuǎn)的實(shí)現(xiàn)方法
這篇文章主要介紹了Python PIL讀取的圖像發(fā)生自動(dòng)旋轉(zhuǎn)的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
使用Python和Spire.XLS輕松實(shí)現(xiàn)Excel到TXT數(shù)據(jù)轉(zhuǎn)換
在數(shù)據(jù)處理和分析的過程中,經(jīng)常需要將不同格式的數(shù)據(jù)進(jìn)行轉(zhuǎn)換,Excel?文件是數(shù)據(jù)存儲(chǔ)和操作中非常常見的格式,而?TXT?文件憑借其簡(jiǎn)單的文本格式,本文將介紹如何使用?Python?和?Spire.XLS?庫將?Excel?導(dǎo)出為?TXT?文件,需要的朋友可以參考下2026-02-02
python機(jī)器學(xué)習(xí)之隨機(jī)森林(七)
這篇文章主要為大家詳細(xì)介紹了python機(jī)器學(xué)習(xí)之隨機(jī)森林,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
Python進(jìn)階之使用selenium爬取淘寶商品信息功能示例
這篇文章主要介紹了Python進(jìn)階之使用selenium爬取淘寶商品信息功能,結(jié)合實(shí)例形式詳細(xì)分析了Python使用selenium與requests模塊爬取淘寶商品信息的相關(guān)操作技巧,需要的朋友可以參考下2019-09-09

