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 :

afficher une image non rectangulaire [Python 3.X]


Sujet :

Tkinter Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2019
    Messages : 34
    Points : 15
    Points
    15
    Par défaut afficher une image non rectangulaire
    Bonjour,

    Je cherche depuis un moment à résoudre une question que je me pose à savoir : peut on afficher une image non rectangulaire dans un canvas ?

    Pour faire simple existe-t-il une méthode permettant d'importer une image, exemple :
    image=tk.PhotoImage(file='chemin fichier')
    puis de l'afficher dans un canvas en spécifiant une couleur qui ne doit pas se superposer au canvas déjà existant, exemple :
    canvas.create_image(coordonnée,coordonnée,image=image,fond='white')) #ici la commande fond est totalement fantaisiste et n'a pour but que d'illustrer ma question

    Malheureusement je n'ai pas trouvé de paramètres ressemblant à cela...
    Peut-être existe-t-il tout simplement une méthode qui découpe directement l'image de base mais je n'ai rien trouvé qui ressemble à ce que je cherche.
    Au final le seul truc qui peut marcher, c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    size=2 #taille des pixels (ne marche pas avec 1 mais c'est normal)
    matrice=[['black','red'],
             ['blue','white']]
     
    #tY,tX sont les dimensions de la matrices
    #y,x sont les coordonnées pour afficher l'image sur le canvas
     
    for i in range(0,tY): #on parcours la matrice
        for j in range(0,tX):
             if obj[i][j]!='white': #s'il ne s'agit pas de la couleur de fond, on l'affiche
                  can.create_rectangle(y+(j*size),x+(i*size),y+(j*size)+size-1,x+(i*size)+size-1,fill=matrice[i][j],outline=matrice[i][j])
    Le problème, c'est que c'est absolument pas optimisé et très compliqué pour créer des images complexes.

    Avez-vous des conseils à me donner pour trouver une solution satisfaisante ?

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 273
    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 273
    Points : 36 757
    Points
    36 757
    Par défaut
    Salut,

    Citation Envoyé par thomas18F Voir le message
    peut on afficher une image non rectangulaire dans un canvas ?
    Toutes les images sont rectangulaires.
    Ce qui peut changer, c'est l'opacité/transparence de certaines régions de l'image qui permettront de voir ce qu'il y a dessous (ou pas).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2019
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par wiztricks Voir le message

    Ce qui peut changer, c'est l'opacité/transparence de certaines régions de l'image qui permettront de voir ce qu'il y a dessous (ou pas).
    Mais comment modifier l'opacité de certaines régions de l'image ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 273
    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 273
    Points : 36 757
    Points
    36 757
    Par défaut
    Citation Envoyé par thomas18F Voir le message
    Mais comment modifier l'opacité de certaines régions de l'image ?
    Avec, par exemple, un éditeur d'Image comme Paint...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2019
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    J'ai essayé de chercher une fonction qui corresponde, mais à part "sélection transparente" rien ne permet d'avoir de l'opacité dans l'image.
    En cherchant sur le net, il semblerait que paint ne soit pas capable d'enregistrer de l'opacité sur des images et qu'il faille passer par un format png (par exemple), mais là encore je ne sais pas par quel moyen spécifier les zones d'opacitées...

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 273
    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 273
    Points : 36 757
    Points
    36 757
    Par défaut
    Citation Envoyé par thomas18F Voir le message
    (par exemple), mais là encore je ne sais pas par quel moyen spécifier les zones d'opacitées...
    Désolé si paint n'était pas une bonne idée...
    Il vous reste à trouver un éditeur d'image qui sache fabriquer des régions transparentes...
    En attendant, vous pouvez toujours essayer avec le fichier joint... sans oublier d'utiliser PIL/Pillow pour lire l'image avant de l'afficher dans le Canvas.

    - W
    Fichiers attachés Fichiers attachés
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2019
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    J'ai essayé de me documenter sur Pillow mais je ne comprend pas l'utilité.
    En effet, ça semble parfaitement marcher sans.

    En tout cas merci beaucoup pour l'aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Libérer l'espace d'une image non affichée
    Par metalleuse dans le forum IHM
    Réponses: 6
    Dernier message: 24/04/2015, 15h06
  2. Afficher une image d'un dossier non inclus dans Apache
    Par Thordax dans le forum Langage
    Réponses: 1
    Dernier message: 07/06/2010, 21h38
  3. Afficher une image gif (non animée)
    Par Figolu dans le forum Qt
    Réponses: 5
    Dernier message: 23/07/2009, 13h16
  4. [AJAX] Afficher une image non enregistrée sur le serveur
    Par magicbisous-nours dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/01/2009, 09h19
  5. Afficher une image sans passer par les textures
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/05/2003, 19h13

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