Vous connaissez probablement les motifs de remplissage du pack Office :
L’idée est de recréer exactement ces motifs en Python pour obtenir par exemple :
Partie 1 – De PowerPoint à Gimp
Dessinez un rectangle dans PowerPoint, supprimez la bordure et utilisez un remplissage de type motif de votre choix avec du noir en couleur de premier plan et du blanc en arrière-plan :
Collez ce rectangle dans Gimp et choisir l’outil de sélection rectangulaire avec comme dimensions fixes 8×8 pixels
Image – Rogner suivant la sélection. Vous devez obtenir une image de 8×8 pixels.
Filtres – Python-Fu – Console puis coller ce script :
def nw():
im = gimp.image_list()[0]
layer = im.layers[0]
s = []
for i in range(64):
v = list(pdb.gimp_image_pick_color(im, layer, i%8, i//8, 1, 0, 0))[0]
if v != 255: s.append(i)
return s
Tapez plusieurs fois sur Entrée pour revenir au prompt puis lancez le programme par nw(). Voici un exemple de résultat :
>>> nw()
[0, 1, 10, 15, 19, 22, 28, 29, 36, 43, 50, 57]
Le programme précédent parcourt les 64 pixels, pour chacun il récupère la première composante de la couleur, si elle n’est pas égale à 255 (blanc) c’est que l’on a du noir (on pouvait aussi faire le test v == 0).
Si vous voulez recommencer avec un autre motif, fermez l’image dans Gimp, changez de motif dans PowerPoint, copiez-collez le nouveau rectangle dans Gimp puis sélection 8×8, rognage et lancez le script nw().
Partie 2 – Script Python pour la NUMWORKS
from kandinsky import *
briquesdiag = 0, 1, 10, 15, 19, 22, 28, 29, 36, 43, 50, 57
def fond(motif):
for c in range(0, 320, 8):
for l in range(0, 222, 8):
for i in motif:
set_pixel(c + (i % 8), l + (i // 8), (0, 0, 0))
fond(briquesdiag)
Voici d’autres codes de motifs extraits de PowerPoint :
pointilles5 = 0,36
pointilles10 = 7,11,22,25,36,40,53,58
pointilles20 = 0,4,18,22,32,36,50,54
diag1 = 3,7,10,14,17,21,24,28,35,39,42,46,49,53,56,60
confettis = 0,4,5,7,12,13,16,17,24,25,27,28,35,36,38,39,46,47,50,51,56,58,59,63
tresse = 0,4,9,15,18,22,27,29,31,32,36,41,45,47,50,54,57,59,61
grtreillis = 0,18,22,36,50,54