@Bezola

Как в python tkinter наложить одно фото на другое с прозрачным фоном (alpha каналом)?

Хочу наложить фигуры на шахматную доску, но когда накладываю, из доски вырезается полный квадрат соответствующий размеру PNG:
import tkinter as tk
from PIL import ImageTk, Image

win = tk.Tk()

win.geometry("1000x1000")

frame = tk.Frame(win, width=1000, height=1000)
frame.pack()
frame.place(anchor='center', relx=0.5, rely=0.5)


im_board = ImageTk.PhotoImage(Image.open('imgs/Chess metabased.png').resize((1000, 1000)))
im_white_king = ImageTk.PhotoImage(Image.open('imgs/Chess white king.png').resize((120, 125)))

label_board = tk.Label(frame, image=im_board)
label_board.place(x=0, y=0)
label_king = tk.Label(frame, image=im_white_king)
label_king.place(x=100, y=100)

win.mainloop()

Вывод:654652dc11e46232153152.png

Putalpha не спасает, выводит артефакты:
def alpha_use(img):
    if img.mode == "RGBA":
        a_channel = Image.new('L', img.size, 'White')  # 'L' 8-bit pixels, black and white
        img.putalpha(a_channel)
    return img
...
im_board = ImageTk.PhotoImage(alpha_use(Image.open('imgs/Chess metabased.png').resize((1000, 1000))))
im_white_king = ImageTk.PhotoImage(alpha_use(Image.open('imgs/Chess white king.png').resize((120, 125))))
...

Вывод: 6546540a0e301763196266.png

Есть ли способ привести к нужному отображению?
  • Вопрос задан
  • 140 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы