Rotation d'image sur tkinter

Yolnit Messages postés 4 Statut Membre -  
yg_be Messages postés 24281 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 24281 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 585
 
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 Statut Membre
 
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 24281 Date d'inscription   Statut Contributeur Dernière intervention   1 585
 
cela donne une erreur en ligne 6, img inconnu.
0
yg_be Messages postés 24281 Date d'inscription   Statut Contributeur Dernière intervention   1 585
 
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 Statut Membre > yg_be Messages postés 24281 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 24281 Date d'inscription   Statut Contributeur Dernière intervention   1 585 > Yolnit Messages postés 4 Statut Membre
 
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 Statut Membre
 
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 24281 Date d'inscription   Statut Contributeur Dernière intervention   1 585
 
la ligne 6 n'est-elle pas exécutée avant la ligne 16?
0