#python #tkinter #python-imaging-library
Вопрос:
Я всегда боролся с ПИЛОМ, это самый краеугольный камень моего существования. В любом случае, я попытался изменить размер изображения, и я следовал учебнику слово в слово, и это все еще не работает для меня.
# image
img = ImageTk.PhotoImage(file='goldman.png')
# resized image
changer = img.resize((20,20),Image.ANTIALIAS)
goldman_logo = ImageTk.PhotoImage(changer)
for x in range(2):
self.my_label = Label(self.invest_row,image=goldman_logo)
self.my_label.grid(row=x,column=0)
и ошибка, которую я получаю, заключается в следующем
AttributeError: 'PhotoImage' object has no attribute 'resize'
Изображение в порядке, я могу загрузить его, если не изменю размер.
Комментарии:
1. A
PhotoImage
не имеет никакого смысла, кроме как отображаться в Tkinter. Любая обработка изображений должна выполняться на обычном PILImage
, прежде чем преобразовывать его в aPhotoImage
.
Ответ №1:
Это не то, как вы открываете и изменяете размер изображений PIL —
image = Image.open('goldman.png')
image = image.resize((20,20), Image.ANTIALIAS)
my_img = ImageTk.PhotoImage(image)
my_img = Label(root,image = my_img)
my_img.pack()
Комментарии:
1. когда я пытаюсь это сделать, изображение не отображается, и оно белое. Однако, если я сделаю обычное фотоизображение, фотография отобразится
2. Что значит быть обычным фотоизображением? А также вам нужно сделать —
my_img = Label(root,image...)
3. Да, PIL также трудно установить. Это не имеет большого значения, когда вы не используете PIL
4. @PCM PIL поддерживает намного больше форматов файлов, чем pure
tkinter
. Кроме того, я не могу найти никакого другого способа преобразованияnumpy
массива вtkinter
изображение, кроме использованияPIL
.5. Почему вы назначаете
Label
виджет переменной с именемmy_img
?