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

Calcul scientifique Python Discussion :

Créer un damier avec PIL


Sujet :

Calcul scientifique Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 16
    Par défaut Créer un damier avec PIL
    Bonjour mon prof me demande créer un damier sur PIL ==> Python à partir de ce code !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    import os
    import PIL
    from PIL import Image
     
     
    #lecture du repertoir courant et création de test pil  dans ce repertoire
    #ce repertoire est defini comme repertoire de travail
     
    chemin = os.getcwd()  #lecture du repertoire courant
    nouvchemin=chemin+'\\test pil'
    if not os.path.isdir(nouvchemin):
        os.mkdir(nouvchemin)   # création de courant\test pil  s'il n'existe pas
    os.chdir(nouvchemin)       # définition du nouveau rep courant
     
     
    print(nouvchemin)
     
     
    import ImageDraw
     
     
    im = Image.new("RGB", (800,800), "#FFFFFF")
    draw = ImageDraw.Draw(im)
     
    def constligne(n):
        for k in range(4): #construction d'une ligne
            draw.rectangle(((2*k*100,n),((2*k+1)*100),n+100),fill="#000000")
     
     
     
     
    del draw
    im.save('cours.jpg', "JPEG")

    je ne sais pas du tout comment faire ! :/

  2. #2
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 16
    Par défaut Python Damier fait maintenant ?
    Bonjour à tous je refait appel à ce forum car j'ai de grande difficulté en programmation.
    J'ai maintenant un damier pour faire un échiquier mais à présent il me faut affiché les lettres de chaque case sur les cotés du damier.
    Exemple: Voir pièce jointes

    Mon code est à présent cela ==> ca ne m'affiche que le damier sur l'image qui s'enregistre à chaque exécution.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    import os
    import PIL
    from PIL import Image
     
     
    #lecture du repertoir courant et création de test pil  dans ce repertoire
    #ce repertoire est defini comme repertoire de travail
     
    chemin = os.getcwd()  #lecture du repertoire courant
    nouvchemin=chemin+'\\test pil'
    if not os.path.isdir(nouvchemin):
        os.mkdir(nouvchemin)   # création de courant\test pil  s'il n'existe pas
    os.chdir(nouvchemin)       # définition du nouveau rep courant
     
     
    print(nouvchemin)
     
     
    import ImageDraw
     
     
    im = Image.new("RGB", (800,800), "#FFFFFF")
    draw = ImageDraw.Draw(im)
     
     
     
    def constligne(n):
        for i in range(8):
          offset = 100 * (i % 2)  # Permet de définir le commencement de la ligne par rapport au reste soit 0 ou 1
          for k in range(4):
                a = 200 * k + offset # Permet de définir les coordonées du point de départ d'un carré de mon damier
                draw.rectangle(((a, i*100), (a+100, i*100+100)), fill="#000000") #Coordonnées d'un carré d'un ligne par rapport au coordonées du premier
     
     
     
    constligne(10)
     
    del draw
    im.save('cours.jpg', "JPEG")

    Alors voila je vous remercie d'avance si un pro en algo et programmation passe par la ...... je lui laisse essaye de réfléchir a mes pointilles mais bon.
    Bon sinon messieurs bonne soirée à tous
    Images attachées Images attachées  

  3. #3
    Expert confirmé

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Par défaut
    Salut,

    Tu dois faire les choses en 2 temps. D'abord générer et enregistrer ton damier (deja fait). Dans un second temps, tu ajoute le texte. Pour cela, tout est dans PIL. Regarde plus precisement ImageDraw et ImageFont qui vont repondre à tes attentes.

    Dans ton cas, il y a cependant une petite difficultées supplémentaires. En effet, il faut prévoir l'espace sur le côté pour afficher le texte. La methode à suivre est dponc la suivante (en me basant sur ton existant):
    =>Generation du damier et sauvegarde
    =>Creation d'une image BIS correspondant à la taille de l'image precedemment générée + les espaces voulus
    =>Copie des pixels de l'image damiers dans la nouvelle image (regarde du coté de load dans PIL)
    =>Ajout de ton texte. Pour cela utilise ImageFont et ImageDraw dans PIL
    =>Sauvegarde finale

  4. #4
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 16
    Par défaut :)
    Voila maintenant un petit bout de temps que je cherche comment superposer deux images...mais impossibles de trouvé :/
    ????

  5. #5
    Expert confirmé

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Par défaut
    Alors qu'entends tu par superposé?

    Deux solutions:
    => Tu veux vraiment faire une superposition. Dans ce cas l'image du dessus doit contenir un canal alpha (image PNG ou GIF) de transparence.
    => Tu veux juste empiler une image sur l'autre sans gestion de transparence. Dans ce cas, tu créé une copie de l'image arrière (il y a une fonction PIL pour cela), puis tu vient modifier les pixels avec ceux de ton image du dessus.

  6. #6
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 16
    Par défaut
    Bon restons ici
    Eh, enfaite je veux mettre un fond blanc et placé mon damier au milieu pour par la suite placé les lettres et les chiffres sur le côté
    Merci
    Bonne journée.

  7. #7
    Expert confirmé

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Par défaut
    Bonjour,

    Par construction d'un damier, entends tu pixel par pixel ou des carré de plusieurs pixels de côté?

    Le code fournis par ton professeur dessine des carrés par ligne via la procedure constligne (doc ici: http://effbot.org/imagingbook/imagedraw.htm).

    Si tu analyse le code tu constatera que ce qui manque, c'est la partie gérant la disposition de ces lignes de cfarré en hauteur. C'est cette partie de code que tu dois principalement générer.

Discussions similaires

  1. Créer un gif annimé avec PIL
    Par Julien N dans le forum Calcul scientifique
    Réponses: 2
    Dernier message: 01/07/2014, 09h27
  2. Réponses: 3
    Dernier message: 21/09/2003, 15h52
  3. Créer un projet avec TurboC++
    Par Thrystan dans le forum Autres éditeurs
    Réponses: 16
    Dernier message: 06/09/2003, 17h32
  4. créer un noeuds avec des paramétres
    Par Toxine77 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 21/01/2003, 16h11
  5. [CR] Est il possible de créer des univers avec Seagate Info?
    Par Frank dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 27/06/2002, 15h22

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