Outils pour utilisateurs

Outils du site


issue85:programmer_en_python_p._54

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue85:programmer_en_python_p._54 [2014/12/09 21:14] – [9] fredphil91issue85:programmer_en_python_p._54 [2014/12/10 12:44] (Version actuelle) andre_domenech
Ligne 5: Ligne 5:
 In case you aren’t familiar with counted cross stitch, I’ll give you a gross overview of what it is. Cross stitch is a type of needlework that uses tiny ‘x’ patterns of thread that eventually make up a picture. The thread is called “floss” and the fabric that you use is called “aida”. According to Wikipedia, aida is a special fabric that has tiny squares that have small holes at regular intervals that form the squares. This facilitates the placement of the “x” patterns that make the image. There are two types of cross stitch. One has an image printed on the aida (sort of like paint by numbers), and the other uses totally blank aida that you count stitches from the pattern. The second is much harder than the first. Go to your favorite fabric store or craft section of your local mega-mart and you’ll get the idea.** In case you aren’t familiar with counted cross stitch, I’ll give you a gross overview of what it is. Cross stitch is a type of needlework that uses tiny ‘x’ patterns of thread that eventually make up a picture. The thread is called “floss” and the fabric that you use is called “aida”. According to Wikipedia, aida is a special fabric that has tiny squares that have small holes at regular intervals that form the squares. This facilitates the placement of the “x” patterns that make the image. There are two types of cross stitch. One has an image printed on the aida (sort of like paint by numbers), and the other uses totally blank aida that you count stitches from the pattern. The second is much harder than the first. Go to your favorite fabric store or craft section of your local mega-mart and you’ll get the idea.**
  
-Il y a plusieurs années, j'avais quelques problèmes de surpression sanguine. Mon médecin m'a suggéré de trouver une activité qui m'obligerait à me concentrer sur quelque chose d'assez utile, mais plutôt simple. Je m'en suis sorti en essayant de faire du point de croix compté. C'est créatif, ciblé, et maintient votre esprit occupé sur ce que vous faites, pas sur ce qui vous dérange. Je me trouve à nouveau dans cette situation, j'ai donc ressorti le cerceau et les aiguilles et j'ai recommencé.+Il y a plusieurs années, j'avais quelques problèmes de d'hypertension. Mon médecin m'a suggéré de trouver une activité qui m'obligerait à me concentrer sur quelque chose d'assez utile, mais plutôt simple. Je m'en suis sorti en essayant de faire du point de croix compté. C'est créatif, ciblé, et maintient votre esprit occupé sur ce que vous faites, pas sur ce qui vous dérange. Me trouvant à nouveau dans cette situation, j'ai ressorti le cerceau et les aiguilles et j'ai recommencé.
  
-Au cas où vous ne seriez pas familier avec le point de croix compté, je vais vous donner un bref aperçu de ce que c'est. Le point de croix est un type de couture qui consiste à faire des « x » minuscules en fil pour aboutir au final à une image. Le fil est appelé « floss » ou « soie » et le tissu que vous utilisez est appelé « aïda ». Selon Wikipedia, l'aïda est un tissu spécial formé de petits carrés et de petits trous à intervalles réguliers. Ceci facilite le placement des motifs en « x » qui forment l'image. Il existe deux types de point de croix. L'un a une image imprimée sur la toile aïda (une sorte de peinture par numéros), et l'autre utilise une toile aïda totalement vierge et vous comptez les points du motif. La seconde est beaucoup plus compliquée que la première. Allez dans votre magasin de tissu préféré ou à la section loisirs créatifs de votre supermarché local et vous comprendrez.+Au cas où vous ne seriez pas familier avec le point de croix compté, je vais vous donner un bref aperçu de ce que c'est. Le point de croix est un type de couture qui consiste à faire des « x » minuscules en fil pour aboutir au final à une image. Le fil s'appelle « floss » ou « soie » et le tissu que vous utilisez s'appelle « aïda ». Selon Wikipedia, l'aïda est un tissu spécial formé de petits carrés et de petits trous à intervalles réguliers. Ceci facilite le placement des motifs en « x » qui forment l'image. Il existe deux types de point de croix. L'un a une image imprimée sur la toile aïda (une sorte de peinture à numéros), et l'autre utilise une toile aïda totalement vierge et c'est vous qui comptez les points du motif. La seconde est beaucoup plus compliquée que la première. Allez dans votre magasin de tissu préféré ou à la section loisirs créatifs de votre hypermarché local et vous comprendrez.
  
 ====== 2 ====== ====== 2 ======
Ligne 27: Ligne 27:
 J'ai également commencé à m'amuser il y a quelque temps avec la création d'un programme qui prendrait une image pour la convertir en un modèle de point de croix. Une chose en entraînant une autre, j'ai dû laisser le programme de côté pour faire d'autres choses. J'ai maintenant déterré l'idée et commencé à nouveau. J'ai également commencé à m'amuser il y a quelque temps avec la création d'un programme qui prendrait une image pour la convertir en un modèle de point de croix. Une chose en entraînant une autre, j'ai dû laisser le programme de côté pour faire d'autres choses. J'ai maintenant déterré l'idée et commencé à nouveau.
  
-Nous allons traiter ce projet durant les prochains articles. Il faudra un certain temps, car certaines choses sont assez complexes et sont assez spécifiques. Voici le « plan de jeu » :+Nous allons traiter ce projet durant les prochains articles. Il faudra néanmoins du temps, car certaines choses sont assez complexes et comprennent de nombreuses parties. Voici le « plan de jeu » :
 • Créer une base de données pour convertir les couleurs de pixels en couleurs de fils. • Créer une base de données pour convertir les couleurs de pixels en couleurs de fils.
 • Créer une interface graphique avec Tkinter pour l'application. • Créer une interface graphique avec Tkinter pour l'application.
Ligne 37: Ligne 37:
 • révision sur la programmation d'interfaces avec Tkinter. Si vous avez raté les précédents articles à ce sujet, merci de vous référer aux numéros 51 à 54 ; • révision sur la programmation d'interfaces avec Tkinter. Si vous avez raté les précédents articles à ce sujet, merci de vous référer aux numéros 51 à 54 ;
 • manipulation d'images avec PIL (http://pillow.readthedocs.org/en/latest/) ; • manipulation d'images avec PIL (http://pillow.readthedocs.org/en/latest/) ;
-• création de PDF à l'aide pyFPDF (https://code.google.com/p/pyfpdf).+• création de PDF à l'aide de pyFPDF (https://code.google.com/p/pyfpdf).
  
 ====== 3 ====== ====== 3 ======
Ligne 49: Ligne 49:
 Pour commencer Pour commencer
  
-La première chose dans notre liste de tâches est de créer la base de données qui contiendra les couleurs de fils DMC (™) et de les rapprocher le mieux possible des valeurs RVB (Rouge, Vert, Bleu) utilisées pour les images sur l'ordinateur. La base de données contiendra également la valeur hexadécimale et la représentation HSV (Teinte, Saturation, Lumière) pour chaque couleur de fil. Il semble que le HSV soit la façon la plus simple de trouver la « plus proche » représentation d'une couleur de fil. Bien sûr, l'œil humain est le décideur ultime. Si vous n'êtes pas familier avec les représentations de couleurs HSV, il y a un article assez complexe sur Wikipedia : http://fr.wikipedia.org/wiki/Teinte_saturation_lumi%C3%A8re. Il pourrait aider, mais il pourrait rendre les choses moins claires.+La première chose dans notre liste de tâches est de créer la base de données qui contiendra les couleurs de fils DMC (™) et de les rapprocher le mieux possible des valeurs RVB (Rouge, Vert, Bleu) utilisées pour les images sur ordinateur. La base de données contiendra également la valeur hexadécimale et la représentation HSV (Teinte, Saturation, Lumière) pour chaque couleur de fil. Il semble que le HSV soit la façon la plus simple de trouver la « plus proche » représentation d'une couleur de fil. Bien sûr, l'œil humain est le décideur ultime. Si vous n'êtes pas familier avec les représentations de couleurs HSV, il y a un article assez complexe sur Wikipedia : http://fr.wikipedia.org/wiki/Teinte_saturation_lumi%C3%A8re. Il pourrait aider, mais il pourrait rendre les choses moins claires.
  
-La première chose dont nous avons besoin est un fichier XML qui contient les couleurs de fils DMC avec une conversion RVB. Le meilleur que j'ai trouvé est ici : http://sourceforge.net/p/kxstitch/feature-requests/9/. Le fichier que vous cherchez est dmc.xml. Téléchargez-le et mettez-le dans un dossier que vous allez utiliser pour stocker le code Python.+La première chose dont nous avons besoin est un fichier XML qui contient les couleurs de fils DMC avec une conversion RVB. Le meilleur que j'ai trouvé est ici : http://sourceforge.net/p/kxstitch/feature-requests/9/. Le fichier que vous cherchez est dmc.xml. Téléchargez-le et mettez-le dans le dossier que vous utiliserez pour stocker le code Python.
  
 ====== 4 ====== ====== 4 ======
Ligne 65: Ligne 65:
 Maintenant, nous allons utiliser apsw (ci-dessous), que vous devriez déjà avoir, pour manipuler la base de données et ElementTree pour faire l'analyse XML (inclus depuis Python version 2.7). Maintenant, nous allons utiliser apsw (ci-dessous), que vous devriez déjà avoir, pour manipuler la base de données et ElementTree pour faire l'analyse XML (inclus depuis Python version 2.7).
  
-Comme toujours, nous commençons avec nos importations. Dans ce programme, nous n'en avons que deux. Nous réglons également le nom de la table.+Comme toujours, nous commençons par nos importations. Dans ce programme, nous n'en avons que deux. Nous réglons également le nom de la table.
  
 La partie suivante devrait vous être familière si vous avez lu les articles depuis un certain temps. Nous créons une fonction pour lire le fichier XML et l'analyser. Nous pouvons ensuite utiliser ces informations pour remplir la base de données. Un extrait du fichier XML est affiché en haut à droite. La partie suivante devrait vous être familière si vous avez lu les articles depuis un certain temps. Nous créons une fonction pour lire le fichier XML et l'analyser. Nous pouvons ensuite utiliser ces informations pour remplir la base de données. Un extrait du fichier XML est affiché en haut à droite.
Ligne 109: Ligne 109:
      compteur += 1      compteur += 1
  
-Maintenant, nous créons et/ou ouvrons la base de données dans la routine OuvrirBase (en bas à droite). Si vous étiez avec nous quand nous avons travaillé avec les bases de données, vous remarquerez que nous utilisons deux curseurs cette fois. La variable curseur est utilisé pour les insertions « normales », et plus tard dans l'instruction select pour la mise à jour pour régler les valeurs hex et HSV. Nous devons utiliser deux curseurs, car si vous modifiez un curseur au milieu d'une instruction logique, vous perdez tout avec une nouvelle commande. Nous pouvons utiliser « ucursor » pour les déclarations de mise à jour. À part cela, il s'agit de notre routine OpenDB habituelle.+Maintenant, nous créons et/ou ouvrons la base de données dans la routine OuvrirBase (en bas à droite). Si vous étiez avec nous quand nous avons travaillé avec les bases de données, vous avez remarqué que nous utilisons deux curseurs cette fois. La variable curseur est utilisé pour les insertions « normales », et plus tard dans l'instruction select pour la mise à jour afin de régler les valeurs hex et HSV. Nous devons utiliser deux curseurs, car si vous modifiez un curseur au milieu d'une instruction logique, vous perdez tout avec une nouvelle commande. Nous pouvons utiliser « ucursor » pour les déclarations de mise à jour. À part cela, il s'agit de notre routine OpenDB habituelle.
  
 ====== 7 ====== ====== 7 ======
Ligne 121: Ligne 121:
 We next create the hex value from the RGB values (middle left).** We next create the hex value from the RGB values (middle left).**
  
-Maintenant que la base de données est créée et/ou ouverte, nous pouvons mettre en place notre table (en haut à droite). Notez que l'instruction SQL ci-dessous utilise les guillemets triples pour permettre un saut de ligne lisible.+Maintenant que la base de données est créée et/ou ouverte, nous pouvons mettre en place notre table (en haut à droite). Notez que l'instruction SQL ci-dessous utilise les guillemets triples pour permettre un saut de ligne pour la lisibilité.
  
 La routine ViderTables (au milieu à droite) est là juste pour s'assurer que si nous voulons ou devons exécuter l'application plus d'une fois, nous commençons avec une table vide et propre si elle existe. La routine ViderTables (au milieu à droite) est là juste pour s'assurer que si nous voulons ou devons exécuter l'application plus d'une fois, nous commençons avec une table vide et propre si elle existe.
Ligne 146: Ligne 146:
 La fonction suivante crée les valeurs HSV à partir des valeurs RVB. J'ai trouvé l'algorithme sur internet. Vous pouvez le chercher aussi. La fonction suivante crée les valeurs HSV à partir des valeurs RVB. J'ai trouvé l'algorithme sur internet. Vous pouvez le chercher aussi.
  
-Enfin, nous créons la fonction MAJBase (page suivante, en haut à gauche). Nous utilisons la commande SELECT * FROM DMC et la variable de curseur « standard » pour contenir les données. Nous parcourons  ensuite les données récupérées, lisons les valeurs RVBet les transmettons à la fonction rgb2hex comme un tuple et à la fonction rgb2hsv comme trois valeurs distinctes. Une fois que nous obtenons les valeurs de retour, nous utilisons la commande SQL update pour trouver l’enregistrement approprié en utilisant la clé primaire (pkID). Comme je l'ai déjà dit, nous devons utiliser un curseur distinct pour l'instruction de mise à jour.+Enfin, nous créons la fonction MAJBase (page suivante, en haut à gauche). Nous utilisons la commande SELECT * FROM DMC et la variable de curseur « standard » pour contenir les données. Nous parcourons  ensuite les données récupérées, lisons les valeurs RVB et les transmettons à la fonction rgb2hex comme un tuple et à la fonction rgb2hsv comme trois valeurs distinctes. Une fois que nous avons obtenu les valeurs de retour, nous utilisons la commande SQL update pour trouver l’enregistrement approprié en utilisant la clé primaire (pkID). Comme je l'ai déjà dit, nous devons utiliser un curseur distinct pour l'instruction de mise à jour.
  
-La dernière chose à faire est d'appeler chacune des fonctions afin de créer la base de donnéeset, à la fin, nous affichons « Fin » pour informer l'utilisateur que tout est fait.+La dernière chose à faire est d'appeler chacune des fonctions afin de créer la base de données et, à la fin, nous affichons « Fin » pour informer l'utilisateur que tout est fait.
  
 OuvrirBase() OuvrirBase()
Ligne 165: Ligne 165:
 Until next time, have a good month.** Until next time, have a good month.**
  
-J'ai nommé ce programme « MakeDB ». La base de données devrait être créée dans le dossier où se trouve le code et le fichier XML. Comme toujours, le code complet peut être trouvé sur http://pastebin.com/P7gZgNTm.+J'ai nommé ce programme « MakeDB ». La base de données devrait être créée dans le dossier où se trouve le code et le fichier XML. Comme toujours, le code complet peut être trouvé sur http://pastebin.com/P7gZgNTm (http://pastebin.com/Zegqw3pi pour le code en anglais).
  
-La prochaine fois, nous travaillerons sur l'interface graphique en utilisant Tkinter, donc, en attendant, vous pouvez vous rafraîchir la mémoire en regardant les FCM 51 à 54 où je vous expliquais Tkinter.+La prochaine fois, nous travaillerons sur l'interface graphique en utilisant Tkinter, donc, en attendant, vous pouvez vous rafraîchir la mémoire en regardant les FCM nos 51 à 54 où je vous expliquais Tkinter.
  
-À la prochaine fois, passez un bon mois.+Passez un bon mois. À la prochaine fois.
  
 ====== TABLEAUX ====== ====== TABLEAUX ======
issue85/programmer_en_python_p._54.1418156076.txt.gz · Dernière modification : 2014/12/09 21:14 de fredphil91