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 :

Transparence d'image sans alpha


Sujet :

Tkinter Python

  1. #1
    Membre Expert
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Par défaut Transparence d'image sans alpha
    Bonjour à tous,

    Je voudrais afficher une image de la manière suivante: les pixels d'une certaine couleurs ne doivent pas être affichés et doivent laisser le 'background' inaltéré (il s'agira de la couleur d'un coin de l'image).

    J'ai trouvé ce code http://www.daniweb.com/code/snippet301514.html. Toutefois cette solution est lourde: elle recrée une seconde image et utilise le canal transparence.

    Je cherche donc une solution plus simple. En pygame par exemple, la fonction Surface.set_colorkey permet d'arriver au meme résultat sans utiliser ni le canal transparence ni la création d'une nouvelle image (http://www.pygame.org/docs/ref/surface.html)

    Merci d'avance pour votre aide

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 069
    Par défaut
    je ne connais pas tKinter mais je suppose que cet exemple signifie que la lib ne gère pas le 'color_key', donc à part passer par une image avec un canal alpha ou du pixel par pixel je ne vois pas ...
    que veux-tu faire avec tKinter que tu ne puisses faire avec Pygame ?

  3. #3
    Membre Expert
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Par défaut
    Pygame ne peut pas gérer deux fenêtres, et je cherche à debugger un jeu reseau en faisant tourner plusieurs clients en local sur ma machine, chaque client ayant sa fenetre

  4. #4
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonsoir,

    Cela fonctionne pour moi avec Photoimage et les gif.

    Bon code

  5. #5
    Membre très actif
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Par défaut
    Bonsoir,

    Je travaille avec Tkinter et je ne pense pas que tu puisse directement le faire dans Tkinter ( avec le Canvas) tu devrais comme PauseKawa l'a dit d'abord modifier ton Image avec PIL.ImageTk et la convertir en PIL.ImageTk.PhotoImage et ensuite l'afficher...

    @+ et bon code
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

  6. #6
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonsoir,

    Le maximum que tu puisse faire en Tkinter pur pour la transparence c'est avec les gif me semble t'il.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import Tkinter
    from Tkconstants import *
    root = Tkinter.Tk()
    img=Tkinter.PhotoImage(file="br.gif")
    frame=Tkinter.Frame(root)
    frame.pack()
    canvas=Tkinter.Canvas(frame,bg ='black', width=150,height=150)
    canvas.pack()
    canvas.create_image(50, 50, image=img)
    root.mainloop()
    Après c'est avec PIL comme le signale afranck64.

    Par contre, puisque tu en parle, et vu ton dernier sujet, pourquoi insister si tu as tout en Pygame ?

    Bon code
    Images attachées Images attachées  

  7. #7
    Membre Expert
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Par défaut Merci
    Bonjour,

    Merci à tous pour vos réponses. Pour faire le bilan, 3 solutions:
    1/ la solution lourde http://www.daniweb.com/code/snippet301514.html
    2/ travailler avec des gif
    3/ pretraiter l'image sous PIL

    @ PauseKawa: parce que j'avais peur que Pygame soit incapable de lancer deux fenêtres, mais finalement il le fait lorsqu'on lance deux process distincts (tout comme tu l'indiquais pour Tkinter dans l'autre sujet).
    Finalement je n'ai pas besoin de migrer (et m'en réjouis car je trouve Tk moins intuitif que pYgame, et la doc moins facile à trouver )

    Bonne journée

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

Discussions similaires

  1. Transparence des images PNG sous Internet Explorer
    Par Torpedox dans le forum Webdesign & Ergonomie
    Réponses: 12
    Dernier message: 14/10/2008, 23h41
  2. Afficher une image sans URL dans un forum
    Par Vanesse dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 01/03/2006, 17h55
  3. Réponses: 7
    Dernier message: 19/12/2005, 08h54
  4. [J2ME][MIDlet]rafraichir une image sans toucher au form?
    Par noobiewan kenobi dans le forum Java ME
    Réponses: 1
    Dernier message: 05/09/2005, 09h54
  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