Mercurial > ift6266
view transformations/gimp_script.py @ 20:1e9525aba832
merge
author | Xavier Glorot <glorotxa@iro.umontreal.ca> |
---|---|
date | Thu, 28 Jan 2010 14:54:28 -0500 |
parents | d511445f19da |
children | 7f5133e1fd23 |
line wrap: on
line source
#!/usr/bin/env python # coding: utf-8 ''' Filtres GIMP sous Python Auteur: Nicolas Boulanger-Lewandowski Date: Hiver 2010 run with: gimp -i --batch-interpreter python-fu-eval --batch - < gimp_script.py inclure pour terminer gimp à la fin du script: pdb.gimp_quit(0) Décommenter les lignes appropriées pour différents filtres 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). Les autres fonctions du programme sont dans la Procedure DataBase (PDB) dans le menu Help > Procedure Browser. ''' from gimpfu import * import numpy class GIMPTransformation(): def __init__(self): self.img = gimp.Image(32, 32, GRAY) self.img.disable_undo() self.layer1 = gimp.Layer(self.img, "layer1", 32, 32, GRAY_IMAGE, 100, NORMAL_MODE) self.img.add_layer(self.layer1, 0) self.dest_rgn = self.layer1.get_pixel_rgn(0, 0, 32, 32, True) def transform_image(self, image): ''' si la ligne suivante échoue, upgrader à GIMP v.2.6.7 OU utiliser une des 2 versions commentées ci-après (10x plus lent) ''' self.dest_rgn[:,:] = (image.T*255).astype(numpy.uint8).tostring() #for i in range(32): # self.dest_rgn[i,:] = (image[i,:]*255).astype(numpy.uint8).tostring() #for i in range(32): # for j in range(32): # self.dest_rgn[i,j] = chr(int((image[i,j] *255))) self.layer1.flush() self.layer1.update(0, 0, 32, 32) ''' application des filtres ''' #pdb.plug_in_noisify(self.img, self.layer1, 0, 0.4, 0, 0, 0) #pdb.plug_in_c_astretch(self.img, self.layer1) #pdb.plug_in_emboss(self.img, self.layer1, 10, 30, 5, 0) #pdb.plug_in_applylens(self.img, self.layer1, 2, 1, 0, 0) #pdb.plug_in_blur(self.img, self.layer1) pdb.plug_in_gauss_rle(self.img, self.layer1, 9, 1, 0) ''' si la ligne suivante échoue, upgrader à GIMP v.2.6.7 OU utiliser la version commentée ci-après (10x plus lent) ''' image = numpy.fromstring(self.dest_rgn[:,:], 'UInt8').reshape((32,32)).T / 255.0 #image = image*0 #for i in range(32): # for j in range(32): # image[i,j] = ord(self.dest_rgn[i,j]) /255.0 return image # TEST if 1: im = numpy.zeros((32,32)) for i in range(32): for j in range(32): im[i,j] = i*j/(32.*32.) test = GIMPTransformation() #for i in range(100): im = test.transform_image(im) import pylab pylab.imshow(im) pylab.show() pdb.gimp_quit(0)