1131022-
使用繁體中文,在w11下使用pytho語言,使用UI界面,新增一個按鈕,功能是將選擇的圖片轉換成icon的小圖片,請給完整可以實際使用的範例,謝謝
pip install pillow
import tkinter as tk
from tkinter import filedialog, messagebox
from PIL import Image
def convert_to_icon():
# 開啟檔案選擇對話框
file_path = filedialog.askopenfilename(
title="選擇圖片",
filetypes=(("Image Files", "*.png;*.jpg;*.jpeg;*.bmp"), ("All Files", "*.*"))
)
if file_path:
try:
# 讀取圖片並調整大小
img = Image.open(file_path)
img = img.resize((64, 64), Image.ANTIALIAS) # 調整為 64x64 大小
# 儲存為 ICO 格式
output_path = filedialog.asksaveasfilename(
defaultextension=".ico",
filetypes=[("ICO files", "*.ico"), ("All Files", "*.*")]
)
if output_path:
img.save(output_path, format='ICO')
messagebox.showinfo("成功", "圖片已轉換為圖標!")
except Exception as e:
messagebox.showerror("錯誤", f"轉換失敗:{e}")
# 創建主窗口
root = tk.Tk()
root.title("圖片轉換為圖標")
root.geometry("300x150")
# 創建按鈕
convert_button = tk.Button(root, text="選擇圖片轉換為圖標", command=convert_to_icon)
convert_button.pack(pady=30)
# 運行主循環
root.mainloop()
接上,如果要讓使用者可以自行選擇存檔位置,要如何修正程式?
要讓使用者能夠自行選擇存檔位置,我們已經在上面的範例中使用了 filedialog.asksaveasfilename 方法。這個方法會彈出一個對話框,讓使用者選擇保存的路徑和檔案名稱。
不過,我可以再提供一個範例,強調如何讓使用者選擇存檔位置並做進一步的改進。例如,你可以預設 ICO 格式並提示使用者進行選擇。以下是更新後的完整範例:
1131022-pic_to_icon_test02
-可用
import tkinter as tk
from tkinter import filedialog, messagebox
from PIL import Image
def convert_to_icon():
# 開啟檔案選擇對話框
file_path = filedialog.askopenfilename(
title="選擇圖片",
filetypes=(("Image Files", "*.png;*.jpg;*.jpeg;*.bmp"), ("All Files", "*.*"))
)
if file_path:
try:
# 讀取圖片並調整大小
img = Image.open(file_path)
img = img.resize((64, 64), Image.LANCZOS) # 使用 LANCZOS 調整為 64x64 大小
# 儲存為 ICO 格式,讓使用者選擇存檔位置
output_path = filedialog.asksaveasfilename(
title="儲存為",
defaultextension=".ico",
filetypes=[("ICO files", "*.ico"), ("All Files", "*.*")]
)
if output_path: # 確保使用者選擇了檔案路徑
img.save(output_path, format='ICO')
messagebox.showinfo("成功", "圖片已轉換為圖標!")
else:
messagebox.showwarning("警告", "未選擇任何存檔位置。")
except Exception as e:
messagebox.showerror("錯誤", f"轉換失敗:{e}")
# 創建主窗口
root = tk.Tk()
root.title("圖片轉換為圖標")
root.geometry("300x150")
# 創建按鈕
convert_button = tk.Button(root, text="選擇圖片轉換為圖標", command=convert_to_icon)
convert_button.pack(pady=30)
# 運行主循環
root.mainloop()
1131022-pic_to_icon_test03
-可用
-加上註解靠右側
-anchor "f": must be n, ne, e, se, s, sw, w, nw, or center
import tkinter as tk
from tkinter import filedialog, messagebox, font
from PIL import Image
def convert_to_icon():
# 開啟檔案選擇對話框
file_path = filedialog.askopenfilename(
title="選擇圖片",
filetypes=(("Image Files", "*.png;*.jpg;*.jpeg;*.bmp"), ("All Files", "*.*"))
)
if file_path:
try:
# 讀取圖片並調整大小
img = Image.open(file_path)
img = img.resize((64, 64), Image.LANCZOS) # 使用 LANCZOS 調整為 64x64 大小
# 儲存為 ICO 格式,讓使用者選擇存檔位置
output_path = filedialog.asksaveasfilename(
title="儲存為",
defaultextension=".ico",
filetypes=[("ICO files", "*.ico"), ("All Files", "*.*")]
)
if output_path: # 確保使用者選擇了檔案路徑
img.save(output_path, format='ICO')
messagebox.showinfo("成功", "圖片已轉換為圖標!")
else:
messagebox.showwarning("警告", "未選擇任何存檔位置。")
except Exception as e:
messagebox.showerror("錯誤", f"轉換失敗:{e}")
# 創建主窗口
root = tk.Tk()
root.title("圖片轉換為圖標")
root.geometry("300x150")
# 設置字型
button_font = font.Font(size=16)
button_fg_color = 'yellow' # 字體顏色
button_bg_color = 'seagreen' # 底色
# 創建按鈕
convert_button = tk.Button(root, text="選擇圖片轉換為圖標", command=convert_to_icon,font=button_font, fg=button_fg_color, bg=button_bg_color)
convert_button.pack(pady=30)
# 添加註解 Label
comment_label = tk.Label(root, text="版本:20241022", anchor='e')
comment_label.pack(side='bottom', fill='x')
# 運行主循環
root.mainloop()