Bonjour,
je travaille actuellement sur une interface qui a dans ses fonctionnalités l'affichage d'une image jpg avec possibilité de zoom.
Pour mon zoom, je redimentionne l'image et je la raffiche avec un create_image().
J'aimerais savoir si il est pas possible de redimentionner directement l'image sur le canva plutôt que d'en afficher une nouvelle avec les nouvelles dimensions??
voila le code que j'ai pour le moment :
Ça marche mais je trouve pas ça propre comme maniere de coder, de plus je dois pouvoir dessiner sur l'image à l'écran et à partir du moment ou je fais un zoom, les formes ajoutées passent en arrière plan de l'image...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 def zoomIn(event=None): global photo, img, scale,canvaEmpty if not canvaEmpty: scale += 0.02 eg = setSize(img, int(realSize[0]*scale), int(realSize[1]*scale)) displayPix(eg) def zoomOut(event=None): global photo, img, scale, canvaEmpty if not canvaEmpty: scale -= 0.02 eg = setSize(img, int(realSize[0]*scale), int(realSize[1]*scale)) displayPix(eg) def setSize(p,w,h): eg = p.resize((w,h))#, Image.ANTIALIAS) -- much slower with ANTIALIAS Option... return eg def displayPix(a): global photo, realSize, p photo = ImageTk.PhotoImage(a) canPix.configure(scrollregion=(0, 0, photo.width(), photo.height())) p = canPix.create_image(int(realSize[0]*scale/2), int(realSize[1]*scale/2), image=photo)
Bref,
Merci d'avance
NightK
Partager