получить размеры канвы
cnv = tk.Cnavas(...) # создали канву
.....
w = cnv['width']
h = cnv['height']
подогнать изображение под канву
from PIL import Image
......
image = Image.open(....) # представили изображение в виде объекта PIL.Image
scaled_image = image.resize((w,h), Image.ANTIALIAS) # растянули/сжали
нарисовать изображение на канве
from PIL import ImageTk
image4canvas = ImageTk.PhotoImage(scaled_image) # представили изображение в виде объекта PIL,
# с которым умеет работать канва
cnv.create_image(0, 0, anchor=tk.NW, image=image4canvas) # нарисовали изображение на канве
Ткинтер, по сути, жуткое извращение, некий интерфейс к функциям для построения графического интерфейса пользователя некоторого изначально мертворождённого языка tcl/tk. Лучший совет по Ткинтеру универсален: не использовать его.