annotate transformations/gimp_script.py @ 12:d511445f19da

appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
author boulanni <nicolas_boulanger@hotmail.com>
date Wed, 27 Jan 2010 21:05:58 -0500
parents f2d46bb3f2d5
children 7f5133e1fd23
rev   line source
7
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
1 #!/usr/bin/env python
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
2 # coding: utf-8
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
3
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
4 '''
12
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
5 Filtres GIMP sous Python
7
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
6 Auteur: Nicolas Boulanger-Lewandowski
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
7 Date: Hiver 2010
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
8
12
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
9 run with:
7
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
10 gimp -i --batch-interpreter python-fu-eval --batch - < gimp_script.py
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
11
12
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
12 inclure pour terminer gimp à la fin du script:
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
13 pdb.gimp_quit(0)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
14
7
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
15 Décommenter les lignes appropriées pour différents filtres
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
16 Les plug-ins de GIMP et leurs paramètres sont disponibles sous GIMP, menu Help > Plug-in Browser (toujours ignorer le paramètre run-mode).
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
17 Les autres fonctions du programme sont dans la Procedure DataBase (PDB) dans le menu Help > Procedure Browser.
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
18 '''
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
19
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
20 from gimpfu import *
12
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
21 import numpy
7
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
22
12
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
23 class GIMPTransformation():
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
24 def __init__(self):
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
25 self.img = gimp.Image(32, 32, GRAY)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
26 self.img.disable_undo()
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
27 self.layer1 = gimp.Layer(self.img, "layer1", 32, 32, GRAY_IMAGE, 100, NORMAL_MODE)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
28 self.img.add_layer(self.layer1, 0)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
29 self.dest_rgn = self.layer1.get_pixel_rgn(0, 0, 32, 32, True)
7
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
30
12
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
31 def transform_image(self, image):
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
32 ''' si la ligne suivante échoue, upgrader à GIMP v.2.6.7
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
33 OU utiliser une des 2 versions commentées ci-après (10x plus lent) '''
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
34 self.dest_rgn[:,:] = (image.T*255).astype(numpy.uint8).tostring()
7
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
35
12
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
36 #for i in range(32):
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
37 # self.dest_rgn[i,:] = (image[i,:]*255).astype(numpy.uint8).tostring()
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
38
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
39 #for i in range(32):
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
40 # for j in range(32):
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
41 # self.dest_rgn[i,j] = chr(int((image[i,j] *255)))
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
42
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
43 self.layer1.flush()
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
44 self.layer1.update(0, 0, 32, 32)
7
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
45
12
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
46 ''' application des filtres '''
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
47 #pdb.plug_in_noisify(self.img, self.layer1, 0, 0.4, 0, 0, 0)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
48 #pdb.plug_in_c_astretch(self.img, self.layer1)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
49 #pdb.plug_in_emboss(self.img, self.layer1, 10, 30, 5, 0)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
50 #pdb.plug_in_applylens(self.img, self.layer1, 2, 1, 0, 0)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
51 #pdb.plug_in_blur(self.img, self.layer1)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
52 pdb.plug_in_gauss_rle(self.img, self.layer1, 9, 1, 0)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
53
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
54 ''' si la ligne suivante échoue, upgrader à GIMP v.2.6.7
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
55 OU utiliser la version commentée ci-après (10x plus lent) '''
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
56 image = numpy.fromstring(self.dest_rgn[:,:], 'UInt8').reshape((32,32)).T / 255.0
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
57
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
58 #image = image*0
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
59 #for i in range(32):
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
60 # for j in range(32):
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
61 # image[i,j] = ord(self.dest_rgn[i,j]) /255.0
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
62
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
63 return image
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
64
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
65 # TEST
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
66 if 1:
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
67 im = numpy.zeros((32,32))
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
68 for i in range(32):
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
69 for j in range(32):
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
70 im[i,j] = i*j/(32.*32.)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
71
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
72 test = GIMPTransformation()
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
73 #for i in range(100):
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
74 im = test.transform_image(im)
7
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
75
12
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
76 import pylab
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
77 pylab.imshow(im)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
78 pylab.show()
7
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
79
12
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
80 pdb.gimp_quit(0)