Rotation d'image sur tkinter

Yolnit Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je cherche à coder un jeu où 3 cercles concentriques rentrent en rotation ou les rotations dépendent des cliques. Je suis face au problème où avec Pillow et des angles non multiples de 90°, mes images se déforment. Je ne vois pas comment contrer ce problème graphique..

Quelqu'un peut m'aider à trouver un moyen pratique d'avoir des rotations avec des angles très petits sans déformations?

Cordialement.
A voir également:

3 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
peux-tu partager ton code, en tenant compte de: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
Yolnit Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Voici le code en espérant avoir correctement respecté les normes du site. J'ai laissé l'angle de rotate à 90 mais vous pouvez essayer d'autres sans soucis, à vos risques et périls pour la qualité..
Ci-joint l'image


import tkinter as tk
from PIL import Image, ImageTk
import time

root = tk.Tk ()
canvas = tk.Canvas (root, width = img.size[0], height = img.size[1], bg = "white")
canvas.pack ()

def rotate (degré):
    global img
    img = img.rotate (degré)
    global tkimg
    tkimg = ImageTk.PhotoImage (img)
    canvas.create_image (img.size[0]/2,img.size[1]/2, image = tkimg, tags = "img")
    
img = Image.open ("target1.png")

rotate(0)

def pressed (event):
    rotate (90)
canvas.tag_bind ("img", "<B1-Motion>", pressed)
root.mainloop ()
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
cela donne une erreur en ligne 6, img inconnu.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
l'image se dégrade, ne se déforme pas.
il me semble que cela est causé par des rotations successives de l'image, et peut facilement être évité en n'appliquant qu'une seule rotation à l'image.
0
Yolnit Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Mais le but est de pouvoir faire tourner l'image peu importe l'angle et ce plusieurs fois sans déformation. Y a-t-il des solutions?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Yolnit Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
il n'est pas nécessaire de faire tourner plusieurs fois la même image.
il faut éviter d'utiliser une image résultat d'une rotation.
il est préférable, chaque fois que tu veux afficher l'image, d'appliquer une seule rotation en repartant de l'image de départ.
0
Yolnit Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
L'unique erreur est ligne 22,

cnv.tag_bind ("img", "<B1-Motion>", pressed) est la correction de cette ligne.

SI vous avez une erreur c'est que le format de l'image enregistré ne correspond pas à celui dans open.Image ligne 16.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
la ligne 6 n'est-elle pas exécutée avant la ligne 16?
0