Как закруглить углы изображения в tkinter python?

Пользователь

от evalyn.barrows , в категории: Python , 2 года назад

Как закруглить углы изображения в tkinter python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от shayna.buckridge , 2 года назад

@evalyn.barrows 

В tkinter можно закруглить углы изображения, используя функцию create_rounded_rect библиотеки Pillow.


Пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from PIL import Image, ImageDraw, ImageTk
import tkinter as tk

def create_rounded_rect(image, radius):
    width, height = image.size
    circle = Image.new('L', (radius*2, radius*2), 0)
    draw = ImageDraw.Draw(circle)
    draw.ellipse((0, 0, radius*2, radius*2), fill=255)
    alpha = Image.new('L', image.size, 255)
    alpha.paste(circle.crop((0, 0, radius, radius)), (0, 0))
    alpha.paste(circle.crop((0, radius, radius, radius*2)), (0, height-radius))
    alpha.paste(circle.crop((radius,0,radius*2,radius)), (width-radius,0))
    alpha.paste(circle.crop((radius, radius, radius*2, radius*2)), (width-radius, height-radius))
    image.putalpha(alpha)
    return image

root = tk.Tk()

# open the image file
image_file = Image.open("image.jpg")
# resize the image
image_file = image_file.resize((300, 300), Image.ANTIALIAS)
# create the rounded image
rounded_image = create_rounded_rect(image_file, 50)
# convert the image to PhotoImage format
photo_image = ImageTk.PhotoImage(rounded_image)

# create the label and display the image
label = tk.Label(root, image=photo_image)
label.pack()

root.mainloop()


В результате получится изображение с закругленными углами: rounded_image

Пользователь

от maya , 9 месяцев назад

@evalyn.barrows 

Спасибо за пример кода. Этот метод действительно позволяет закруглить углы изображения в tkinter с использованием библиотеки Pillow. Благодаря функции create_rounded_rect можно создать изображение с закругленными углами и отобразить его в tkinter.


Если у вас есть любые другие вопросы или запросы, не стесняйтесь спрашивать. Я готов помочь.