IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Rotation d'image sur tkinter


Sujet :

Tkinter Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2021
    Messages : 8
    Points : 1
    Points
    1
    Par défaut Rotation d'image sur tkinter
    Bonjour, je dois créer un jeu avec des sections d'images en rotation mais je suis bloqué pour faire apparaître l'image sur mon Canevas.

    Le but du jeu est d'aligner des arcs de trois disques concentriques.
    Lorsque je tourne le disque le plus petit, le 2ème disque doit tourner dans le sens inverse et le 3ème disque dans le bon sens.
    Lorsque je tourne le 2ème disque, le disque 1 reste stable et le 3ème disque tourne dans le sens inverse. Et au final lorsque je tourne le 3ème disque, les deux autres sont stables.

    J'ai essayé précédemment avec des cercles et des traits cela fonctionne parfaitement mais depuis la nouvelle version de Python mes codes où j'utilisais PhotoImage ne fonctionnent plus.

    Ainsi je demande si certains pourraient me dire quoi/comment faire pour insérer l'image et la découper en 3 disques (je suppose qu'il faut insérer chaque pixel dans une matrice mais cela nécessite des classes et je n'ai pas codé avec).
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 333
    Points : 36 853
    Points
    36 853
    Par défaut
    Salut,

    Une image est un tableau de pixels. Pas besoin de classe pour faire leur rotation mais d'un bon algorithme (et vous avez une rubrique pour çà).

    Après vous pouvez utiliser une bibliothèque externe comme PIL(low) qui sait faire.

    Vous pouvez aussi "tricher" en stockant des 360/x rotations de x° et en limitant les angles de rotation aux multiples de x.

    - W

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2021
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Re-Bonjour, de quelle rubrique parlez vous? (Désolé je suis un peu perdu je débute en python...)

    Cordialement.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 333
    Points : 36 853
    Points
    36 853
    Par défaut
    Salut,

    Citation Envoyé par Yolnit Voir le message
    Re-Bonjour, de quelle rubrique parlez vous? (Désolé je suis un peu perdu je débute en python...)
    Vous êtes sur le site de "developpez".
    Ce site est organisé en rubriques qui apparaissent dans les barres d'outils en en-tête.
    Prenez le temps de visiter et de voir un peu quelles sont les ressources disponibles avant de vous jeter tête perdue à vouloir qu'on résolve votre problème "python".

    - W

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2021
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    J'ai regardé en détail avec Pillow avec l'outil crop() pour découper mon image cependant j'ai un message d'erreur "No such file or directory". Mais j'arrive à afficher l'image avec PhotoImage.

    J'ai donc essayé de remplacer PhotoImage par open("C://Users//***//Pictures//ImagePython//image.gif") avec un chemin qui mène directement à la mémoire de mon ordinateur mais je ne peux toujours pas découper mon image.
    En cherchant assez longtemps sur internet et sur le forum, je ne trouve aucun exemple similaire qui puisse me dire si crop() peut découper une image rectangulaire en plusieurs cercles de rayons différents.

    Cette situation est frustrante car j'ai l'impression de bloquer sur un problème pourtant si facile à résoudre...

    Cordialement.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 333
    Points : 36 853
    Points
    36 853
    Par défaut
    Salut,

    Au départ votre question portait sur la rotation: que vient faire crop ici?
    Pour ce qui est d'image lue par PIL à afficher avec les PhotoImage tkinter, il y a un peu de travail et c'est même dans la FAQ.

    ...découper une image rectangulaire en plusieurs cercles de rayons différents.
    Cette situation est frustrante car j'ai l'impression de bloquer sur un problème pourtant si facile à résoudre...
    Est-ce qu'une image peut être autre chose qu'un tableau (rectangulaire) de pixels?
    Comme un tableau a deux dimensions, on peut définir un cercle dans une image mais pour qua çà fasse une image, il faudra garder le carré qui circonscrit le cercle.

    Par contre, on peut fabriquer une image où les pixels extérieurs à un disque donné seront "transparents".

    - W

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2021
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Re-bonjour,

    Je me suis déjà basé sur les modèles de cette FAQ mais même en faisant des modifications le code ne marche pas. C'est comme si Image.open refusait de s'exécuter sur spyder.C'est possible?

    Je vois ou vous voulez en venir pour les tableaux de pixels mais dans ce cas là crop sera utile pour définir les différents rectangles non?

    Je peux appliquer un changement de couleur sur l'extérieur de mes cercles pour les mettre transparents?

    Cordialement.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 333
    Points : 36 853
    Points
    36 853
    Par défaut
    Citation Envoyé par Yolnit Voir le message
    Je me suis déjà basé sur les modèles de cette FAQ mais même en faisant des modifications le code ne marche pas. C'est comme si Image.open refusait de s'exécuter sur spyder.C'est possible?
    A partir du moment où vous débutez, tout est possible.
    Par contre, si vous voulez savoir ce qui ne va pas dans ce que vous avez fait, poster du code pour le montrer serait un bon début.

    Citation Envoyé par Yolnit Voir le message
    Je vois ou vous voulez en venir pour les tableaux de pixels mais dans ce cas là crop sera utile pour définir les différents rectangles non?
    Des rectangle oui, des ronds non. Après, on n'est pas dans votre tête alors si vous ne savez pas exprimer le comment de ce que vous voulez faire (un peu plus précisément que "je veux)", on ne va pas pouvoir vous aider à le faire "avec" Python.

    Citation Envoyé par Yolnit Voir le message
    Je peux appliquer un changement de couleur sur l'extérieur de mes cercles pour les mettre transparents?
    On peut faire ce qu'on veut... tant que ça respecte les lois de la physique et que vous essayez de le coder par vous même.

    - W

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2021
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    J'ai résolu le problème de l'affichage d'image, les modifications apportées sont bonnes, ouf!
    essaie2.py

    Désolé si je ne suis pas assez précis. Mon image ressemble à un labyrinthe (ci-joint) blanc et noirNom : Damier.GIF
Affichages : 659
Taille : 138,3 Ko.

    Comme expliqué dans mon premier message, la portion centrale qui sera circulaire sera associée à mon disque le plus petit. La portion suivante à D3 et la dernière à D3. Pour faire simple, je veux commencer par D3 donc je dois utiliser un outil qui me permettre de neutraliser D2 et la portion centrale. Une fois ceci fait, je vais devoir faire pivoter mon image à 360° en me basant sur le 1er programme joint à mon message. L'utilisation des complexes m'a d'ailleurs facilité le travail il s'agit à mon avis de la solution la plus rapide.

    Il est à mon avis facile d'adapter mon premier programme à des images mais pour moi le problème est dans la manière de découper mon image principale en plusieurs afin de leur donner des rotations différentes.

    J'espère avoir été plus précis et que vous pourrez y voir plus clair dans cette affaire.

    Bien à vous.

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 333
    Points : 36 853
    Points
    36 853
    Par défaut
    Salut,

    Citation Envoyé par Yolnit Voir le message
    J'espère avoir été plus précis et que vous pourrez y voir plus clair dans cette affaire.
    Précis ou pas, je ne vais pas coder à votre place.

    - W

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2021
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Je ne vous demande pas de coder pour moi!

    Soyons clair je cherchais des renseignements pour savoir comment m'y prendre. Comme je n'étais pas assez précis j'ai détaillé davantage la démarche pour que vous puissiez me corriger si je pensais de la mauvaise manière...Un code tout fait ne m'intéresse pas!

    J'ai réussi à obtenir des carrés à bords transparents pour mon image il ne me reste plus que les rotations à faire. Je m'excuse d'avoir créé ce quiproquo.

    Cordialement.

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2021
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Je rencontre un problème de déformation d'image quand j'applique une rotation avec ce code là:teste5.py

    Savez-vous pourquoi il y a une déformation?
    Y a-t-il un moyen d'éviter ça tout en gardant la structure de mon code?

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 333
    Points : 36 853
    Points
    36 853
    Par défaut
    Citation Envoyé par Yolnit Voir le message
    Savez-vous pourquoi il y a une déformation?
    Y a-t-il un moyen d'éviter ça tout en gardant la structure de mon code?
    Imaginez un tableau (2D) de pixels.
    Que se passe-t-il lorsqu'on fait des rotations qui ne sont pas des multiples de 90°?
    Ca interpole... et si vous faite une rotation d'une image qui a déjà été interpolée ben çà ne va pas s'arranger.

    Tout çà pour dire que vous voulez faire un projet qui s'appuie sur des images mais vous êtes juste en train de découvrir à quoi ressemble une image numérique et des limites avec lesquelles il va bien falloir trouver comment faire avec....

    Et ou commence le boulot de programmation: comment faire un rendu visuel acceptable malgré ces contraintes qui passe par l'évaluation de différentes options, le choix d'une solution raisonnable (un juste milieu entre ce que çà peut faire et ce que vous pouvez faire).... Et quelque part constater que "programmer" c'est plus compliqué qu'une histoire de langage de programmation.

    - W

  14. #14
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2021
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Comme dit précédemment, je suis un débutant ce n'est que ma première année de pratique et je m'efforce de faire de mon mieux.

    J'ai compris ce que vous voulez dire effectivement ça ne va pas marcher. Je vais essayer d'enregistrer une copie de mon image initiale et exprimer la rotation en degré à l'aide de cette copie et d'un angle, le tout sauvegardé dans un dossier.

    Néanmoins je trouve l'outil rotate assez limité et contraignant. Y a-t-il un outil similaire avec PIllow pour peux traiter le problème d'une autre manière?

    Cordialement.

  15. #15
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 333
    Points : 36 853
    Points
    36 853
    Par défaut
    Citation Envoyé par Yolnit Voir le message
    Y a-t-il un outil similaire avec PIllow pour peux traiter le problème d'une autre manière?
    Désolé mais il y a beaucoup de bibliothèques de traitement d'image mais je ne sais pas laquelle va adresser le mieux le problème que vous avez: il faut "tester".

    Après regardez votre image, ce sont des cercles concentriques et un tas de rayons.
    Le labyrinthe, c'est "effacer" des segments de rayons et des arcs de cercles.
    "effacer" = redessiner par dessus avec la couleur du fond.

    Après vous pouvez toujours forcer les rotations à un multiple de l'angle des arcs et générer autant d'images qu'il faut avec un outil qui sait bien faire çà...

    Ce qui fait 3 pistes à explorer... pour trouver un compromis entre le rendu visuel et la complexité à le réaliser.

    - W

Discussions similaires

  1. [Python 3.X] Défilement D'images sur Tkinter
    Par YokAtom dans le forum Général Python
    Réponses: 9
    Dernier message: 02/06/2017, 20h17
  2. Réponses: 4
    Dernier message: 18/09/2016, 10h32
  3. [AC-2000] clGdi32 - fonction rotate - Difficultés rencontrées sur certaines images
    Par tgrandje dans le forum VBA Access
    Réponses: 1
    Dernier message: 08/03/2016, 08h18
  4. Problème texte/image sur Tkinter
    Par Dobbraga dans le forum Général Python
    Réponses: 2
    Dernier message: 15/05/2014, 11h56
  5. Rotation d'une image sur une autre image de fond
    Par domas_24 dans le forum 2D
    Réponses: 0
    Dernier message: 16/03/2011, 01h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo