banner
andrewji8

Being towards death

Heed not to the tree-rustling and leaf-lashing rain, Why not stroll along, whistle and sing under its rein. Lighter and better suited than horses are straw sandals and a bamboo staff, Who's afraid? A palm-leaf plaited cape provides enough to misty weather in life sustain. A thorny spring breeze sobers up the spirit, I feel a slight chill, The setting sun over the mountain offers greetings still. Looking back over the bleak passage survived, The return in time Shall not be affected by windswept rain or shine.
telegram
twitter
github

Python將頭像圖片改為圓形頭像

直接上代码

from PIL import Image, ImageDraw, ImageTk
import tkinter as tk
from tkinter import filedialog

def convert_to_circle(image_path):
    # 打開圖片並轉換為RGBA模式
    image = Image.open(image_path).convert("RGBA")

    # 創建一個與圖片大小相同的透明背景圖像
    circle_image = Image.new('RGBA', image.size, (0, 0, 0, 0))

    # 創建一個畫筆
    draw = ImageDraw.Draw(circle_image)

    # 畫一個圓形
    draw.ellipse((0, 0, image.size[0], image.size[1]), fill=(255, 255, 255, 255))

    # 將原始圖片應用到遮罩上
    circle_image.paste(image, (0, 0), mask=circle_image)

    # 返回圓形邊緣圖像
    return circle_image

def select_image():
    # 打開文件對話框,選擇圖片文件
    file_path = filedialog.askopenfilename(filetypes=[("Image files", "*.jpg;*.jpeg;*.png")])

    # 如果選擇了圖片文件,則進行轉換並顯示在程式中
    if file_path:
        circle_image = convert_to_circle(file_path)
        circle_image.thumbnail((300, 300))  # 縮小圖像以適應顯示區域
        photo = ImageTk.PhotoImage(circle_image)  # 將圖像轉換為PhotoImage對象
        image_label.configure(image=photo)
        image_label.image = photo  # 保持對圖像的引用
        image_label.circle_image = circle_image  # 保存原始的PIL圖像

def save_image():
    # 獲取當前顯示的圖像
    circle_image = image_label.circle_image

    # 如果有圖像,則保存為文件
    if circle_image:
        save_path = filedialog.asksaveasfilename(defaultextension=".png", filetypes=[("PNG files", "*.png")])
        if save_path:
            circle_image.save(save_path)
            print("頭像已保存為:", save_path)

# 創建主視窗
window = tk.Tk()
window.title("圓形頭像轉換")
window.geometry("400x400")

# 創建選擇按鈕
select_button = tk.Button(window, text="選擇圖片", command=select_image)
select_button.pack(pady=10)

# 創建圖像顯示區域
image_label = tk.Label(window)
image_label.pack()

# 創建保存按鈕
save_button = tk.Button(window, text="保存圖像", command=save_image)
save_button.pack(pady=10)

# 運行主迴圈
window.mainloop()

首先,我們導入了所需的庫。PIL 庫用於圖像處理,tkinter 庫用於創建 GUI 界面。

接下來,我們定義了一個名為 convert_to_circle 的函數,用於將選擇的圖片轉換為圓形圖像。這個函數接受一個圖片路徑作為參數,並返回處理後的圓形圖像。

在 convert_to_circle 函數中,我們首先打開圖片並將其轉換為 RGBA 模式。然後,創建一個與原始圖片大小相同的透明背景圖像。接著,創建一個畫筆對象,並使用它繪製一個圓形,圓形的位置和大小與原始圖片相同,填充顏色為白色。最後,將原始圖片應用到透明背景圖像上,使用透明背景圖像作為遮罩。最終,返回處理後的圓形圖像。

接下來,我們定義了一個名為 select_image 的函數,用於選擇圖片文件並將其轉換為圓形圖像。在這個函數中,我們打開文件對話框,選擇圖片文件,並獲取選擇的文件路徑。如果選擇了圖片文件,則調用 convert_to_circle 函數將圖片轉換為圓形圖像。然後,將圖像縮小以適應顯示區域,並將其顯示在程式中的圖像標籤上。

最後,我們定義了一個名為 save_image 的函數,用於將當前顯示的圓形圖像保存為文件。在這個函數中,我們獲取當前顯示的圓形圖像,並打開文件對話框選擇保存路徑。如果選擇了保存路徑,則將圖像保存為文件。

在主程式中,我們創建了一個主視窗,並設置視窗的標題和大小。然後,創建了一個選擇按鈕,點擊按鈕時調用 select_image 函數。接著,創建了一個用於顯示圖像的標籤。最後,創建了一個保存按鈕,點擊按鈕時調用 save_image 函數。

最後,通過運行主迴圈啟動應用程式,等待使用者的交互操作。

程式中使用了 PIL 庫(Python Imaging Library)來處理圖像,以及 tkinter 庫來創建圖形使用者界面。它通過將圖像轉換為 PhotoImage 對象,並將其賦值給圖像顯示區域的 image 屬性,來顯示圖像。同時,它還保持了對原始 PIL 圖像的引用,以便在保存圖像時使用。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。