這次嘗試用Python寫一個PNG轉ICO的小工具,雖然是很基礎的應用,網路上也有很多線上轉檔工具,但有時真的很不想把照片上傳下載,也覺得很麻煩,如果可以在電腦中快速選取生成,那豈不美哉?.ico
檔案可以做一些有趣的應用,像是網站小小的LOGO展示,也能應用在電腦的資料夾圖示呈現,自定義資料夾不僅有個人特色,有時也能幫助自己工作效率的提升,畢竟圖案的吸引力總比純文字在辨識上更快速!像我都會把程式專案加上程式的ICON、相簿則使用相機的ICON、部落格待寫文章則會使用寫字的ICON。本文會有步驟教學。
本文透過自製的PNG轉ICO工具,我們可以用影像編輯工具或是PPT來快速製作PNG圖檔,然後再快速轉檔為ICO檔案。對於ICO轉檔,不能直接修改圖片的後綴來達成,首先要確認輸入的檔案必須要有透明度,再來要調整尺寸和確保圖像具有RGBA色彩空間,對於簡單的圖像轉換這樣的做法就足夠了。為了更方便使用,這次學習引入了圖形化介面tkinter
模組,如此以後就不必開啟整合開發環境執行程式碼,直接點擊儲存好的.py
檔案,指定使用python的方式開啟檔案,即可快速的進行檔案匯入與存檔。以下分享我的程式碼。
內容索引
Toggle程式功能
- 將照片進行色彩轉換成RGBA
- 將
.png
轉檔為.ico
程式需求
- 安裝Python編譯器與IDE(下圖以Visual Studio Code為例)
- 需要以下命令安裝這些模組
pip install pillow
:PIL (Pillow) 是 Python 的圖像處理模組,用於處理圖像檔案pip install tkinter
:Tkinter 是 Python 的 GUI 模組,用於建立 GUI 應用程式
基本程式碼
有基本程式基本上就能直接透過VS Code執行來使用了,程式碼如下。
from PIL import Image | |
import os | |
def png_to_ico(png_path, ico_path, icon_sizes=None): | |
icon_sizes = icon_sizes or [(16, 16), (32, 32), (64, 64)] # 預設生成16x16、32x32、64x64大小的ICO檔案 | |
img = Image.open(png_path) | |
if img.mode != "RGBA": | |
img = img.convert("RGBA") | |
ico_images = [] | |
for size in icon_sizes: | |
img_resized = img.resize(size) | |
ico_images.append(img_resized) | |
ico_path = os.path.abspath(ico_path) | |
img.save(ico_path, format="ICO", sizes=[(img.width, img.height) for img in ico_images]) | |
if __name__ == "__main__": | |
png_file = "input.png" # 輸入的PNG檔案路徑 | |
ico_file = "output.ico" # 輸出的ICO檔案路徑 | |
png_to_ico(png_file, ico_file) |
加入GUI介面程式碼
我們簡單使用Tkinkter來設計一個GUI介面,這樣就不用特別開啟VS Code來執行程式,直接點及py檔案就能執行。以下是加入Tkinter的效果,點擊按鈕後可以選擇欲轉檔的.png
與儲存的路徑,然後執行轉檔程式碼。
import tkinter as tk | |
from tkinter import filedialog | |
import PIL.Image | |
import os | |
def png_to_ico(png_file, ico_file): | |
with open(png_file, "rb") as png: | |
icon = PIL.Image.open(png).convert("RGBA") | |
with open(ico_file, "wb") as ico: | |
icon.save(ico, "ico") | |
def select_files(): | |
png_file_path = filedialog.askopenfilename(filetypes=[("PNG files", "*.png")]) | |
if not png_file_path: | |
return | |
# 取得輸入PNG檔案的名稱(去除路徑) | |
png_filename = os.path.basename(png_file_path) | |
# 將ICO檔案名稱設定為相同的名稱,只改變副檔名為.ico | |
ico_file_path = os.path.splitext(png_filename)[0] + ".ico" | |
ico_file_path = filedialog.asksaveasfilename(defaultextension=".ico", initialfile=ico_file_path, filetypes=[("ICO files", "*.ico")]) | |
if not ico_file_path: | |
return | |
png_to_ico(png_file_path, ico_file_path) | |
if __name__ == "__main__": | |
root = tk.Tk() | |
root.title("PNG to ICO Converter") | |
root.attributes("-topmost", True) | |
root.geometry("300x150") # 設定視窗大小 | |
frame = tk.Frame(root) | |
frame.pack(pady=50) | |
select_button = tk.Button(frame, text="Select Files", command=select_files, width=20, height=2, bg="#B4A28E") | |
select_button.pack() | |
root.mainloop() |
如何快速製作PNG圖檔?
如何製作一個方形的.png
圖檔,當然可以使用修圖軟體或繪圖軟體來製作,但我們也可以簡單快速使用Power Point來製作,也可以透過現在很多Free ICON或AI ICON生成工具來製作更有特色的圖示檔案。
方法1. 使用PPT製作ICON
用Power Point的原因是其普及率高且上手難易度不高,先設計一個長寬比1:1的畫面,放上想要的圖片,然後另存新檔時儲存為可攜式網路圖形格式,便是.png
檔案。這裡的圖案可以上網找、自己繪製、AI生成、也能使用照片。
- STEP1:新增一個
.pttx
檔案 - STEP2:導覽列→設計→投影片大小→自訂投影片大小→輸入寬度與長度相同的數值
- STEP3:在投影片中加入圖檔
- STEP4:導覽列→檔案→另存新檔→瀏覽→選擇存檔路徑與輸入檔案名稱→存檔類型選擇可攜式網路圖形格式→儲存
方法2. 免費ICON網站:flaticon、Icon-rainbow
在網路上也有很多免費的ICON網站可以使用,包括flaticon、Icon-rainbow都是很好的選擇,存檔時選擇.png檔案即可,要用.svg也可以插入Power Point只是操作會比較複雜一些。
方法3. 可製作LOGO的AI:Recraft、Bing Image Creator
目前有很多免費的生程式圖案的AI工具,其中針對LOGO設計的Recraft是一個很好的選擇,而Bing Image Creator因為生成為正方形,也可以用logo、vector art等關鍵字promt來生成,所以也是很好的一個作法。如果你有其他AI軟體也可使用,像撰風更喜歡Midjourney,只是這個是需要付費的生程式AI程式。這邊用Recraft來做示範。
如何使用Recraft製作LOGO圖片?
- STEP1:註冊Recraft並新增一個Project
- STEP2:選擇生成風格
- STEP3:輸入Prompt(請使用英文)
- STEP4:按下Recraft生成圖片
- STEP5:點擊喜歡的圖片→選擇存檔格式
.png
→Save
如何將資料夾設為ICO檔案?
- STEP1:對資料夾按右鍵→內容→自訂→變更圖示→瀏覽選擇
.ico
圖檔→確定
Python學習紀錄
主題 | 文章 |
編譯器與IDE |
|
|
|
常用模組 |
|
影像處理 |
|
網路爬蟲 |
|
圖形介面 |
|
檔案打包 |
|
主題 | 文章 |
影像應用 |
|
機器學習 |
|
深度學習 |
|
語言分析 |
|
圖像生成 |
|
小小作品 |
常用網站 |
[ 編輯 ] 筆記 » 程式語言 » Python |
Python|HTML|CSS|JavaScript|Blender|Unreal Engine |
Facebook留言
Wordpress留言 (0)