0

I'm hoping someone can help with this. I've got a new install of Pi OS (1/12/23) running on an RPi 3. Searching the web, I've found that this is not a new problem but I can't seem to find the answer. My problem is that the following short code runs fine as is.

from tkinter import *
from PIL import Image, ImageTk
root = Tk()
canvas=Canvas(root,width=500, height=300, bg="blue")
canvas.pack(pady=20)
im1 = ImageTk.PhotoImage(Image.open("/home/pi/Downloads/Picture.png"))
#im1 = im1.resize((25,25), Image.ANTIALIAS)
img1=canvas.create_image(0,0, anchor=NW, image=im1)
root.mainloop()

It creates that blue canvas and loads Picture.png just fine. When I remove the comment from the line to resize the image, the blue canvas loads without the Picture.png and I get the error:

im1 = im1.resize((25,25), Image.ANTIALIAS)
AttributeError: 'PhotoImage' object has no attribute 'resize'

I've done all kinds of searches on this and the code I posted is what is recommended when there are obvious errors in the original posted code. For posts that I've seen that use code like this, I've never seen a solution posted but most of them are a few years old so I'll ask. Can someone tell me what is going wrong here?????

TheLizzard
  • 7,248
  • 2
  • 11
  • 31
Bam
  • 1

1 Answers1

0

As the error said resize() is not defined inside class ImageTk.PhotoImage. It is defined in class Image so it should be called on the result of Image.open(...):

im1 = ImageTk.PhotoImage(Image.open("/home/pi/Downloads/Picture.png").resize((25,25)))
acw1668
  • 40,144
  • 5
  • 22
  • 34
  • Thank you for the answers. I tried both of the suggestions. Changing "resize" to "resizeImage" did not work. I got the same error as before. The suggeston from acw1668 to be called as part of "Image.open" did work. – Bam Jan 16 '23 at 19:17