• Aucun résultat trouvé

PIL Python Imaging Library

N/A
N/A
Protected

Academic year: 2022

Partager "PIL Python Imaging Library"

Copied!
7
0
0

Texte intégral

(1)

PIL Python Imaging Library

1. généralité

 1.1. Qu'est-ce que PIL ? 2. information

 2.1. Comment obtenir les informations de format et de taille d'une image ?

 2.2. Comment visualiser une image avec PIL ? 3. transformation

 3.1. Comment décomposer une image en couleur en ses 3 composantes rouge, vert, bleu ?

 3.2. Comment convertir le format d'image à l'aide de PIL?

 3.3. Comment créer un thumbnail avec PIL?

 3.4. Comment créer les thumbnails des images de tout un répertoire ?

 3.5. Comment effectuer une rotation à une image ?

 3.6. Comment effectuer une transformation géométrique d'une image ?

 3.7. Comment redimensionner une image ?

 3.8. Comment filter une image ? 4. manipulation

 4.1. Comment créer une image avec son symétrique ?

 4.2. Comment créer une image avec un fond d'une couleur donnée?

 4.3. Comment dessiner dans une image ?

 4.4. Comment copier plusieurs modeles dans image ?

 4.5. Comment écrire du texte dans une image ?

1. généralité

1.1. Qu'est-ce que PIL ?

La bibliothèque Python Imaging Library (PIL) ajoute des capacités de traitement d'image à votre interpréteur Python. Cette bibliothèque prend en charge de nombreux formats de fichiers, un puissant lot de fonctions de traitement d'image et de nouvelles capacités graphiques. L'information peut être trouvée sur ce site http://www.pythonware.com/products/pil/

2. information

2.1. Comment obtenir les informations de format et de taille d'une image ?

On remarquera, l'utilisation du try/except afin de gérer correctement les erreurs. Par la suite, les exemples PIL vont à l'essentiel. Il serait bon de gérer les exceptions de cette manière.

from PIL import Image file='cours.png' try:

im = Image.open(file)

print file, im.format, "%dx%d" % im.size, im.mode except IOError:

pass

L'affichage donne ceci:

cours.png PNG 230x150 RGB

2.2. Comment visualiser une image avec PIL ?

from PIL import Image import ImageFilter

im = Image.open('cours.png') im.show()

(2)

3. transformation

3.1. Comment décomposer une image en couleur en ses 3 composantes rouge, vert, bleu ?

import Image

img = Image.open("presentation.png") # Ouverture de l'image

r,g,b = img.split() # Récupération des différentes composantes de l'image r.save('r.jpg') ## Sauvegarde des différents images composantes

g.save('v.jpg') b.save('b.jpg')

Exemple:

3.2. Comment convertir le format d'image à l'aide de PIL?

Les formats possibles sont:

JPEG PNG BMP

exemple:

from PIL import Image

im = Image.open('cours.png') im.save('cours.jpg', "JPEG") im.save('cours.bmp', "BMP")

image JPEG BMP

(3)

3.3. Comment créer un thumbnail avec PIL?

Il suffit d'utiliser la fonction thumbnail de la manière suivante:

from PIL import Image

im = Image.open('aider.png')

im.thumbnail([128,128], Image.ANTIALIAS) im.save('aider_small.png', "PNG")

ou

from PIL import Image size=128,128

im = Image.open('aider.png')

im.thumbnail(size, Image.ANTIALIAS) im.save('aider_small.png', "PNG")

image thumbnail

3.4. Comment créer les thumbnails des images de tout un répertoire ?

from PIL import Image import glob, os

size = 128, 128

for infile in glob.glob("*.jpg"):

file, ext = os.path.splitext(infile) im = Image.open(infile)

im.thumbnail(size, Image.ANTIALIAS) im.save(file + "_thumbnail.jpg", "JPEG")

3.5. Comment effectuer une rotation à une image ? On utilise rotate suivi de l'angle.

from PIL import Image

im = Image.open('explication.png') out = im.rotate(45)

out.save('rotate.png')

image rotation

(4)

3.6. Comment effectuer une transformation géométrique d'une image ? On utilise transpose.

Il existe des flag pour indiquer les opérations:

FLIP_LEFT_RIGHT FLIP_TOP_BOTTOM

ROTATE_90 rotation de 90°

ROTATE_180 rotation de 180°

ROTATE_270 rotation de 270°

Une transformation avec l'option ROTATE_90 est équivalent à une rotation avec la fonction rotate.

from PIL import Image

im = Image.open('explication.png') out = im.rotate(45)

out.save('rotate.png')

out = im.transpose(Image.FLIP_LEFT_RIGHT) out.save('flip.png')

image transformation geométrique

3.7. Comment redimensionner une image ?

from PIL import Image

im = Image.open('explication.png') out = im.resize((100,120))

out.save('resize.png'

image resultat

(5)

3.8. Comment filter une image ?

Le module ImageFilter permet d'appliquer plusieurs filtes. L'url imagefilter décrit ce qu'il est possible de faire (filtres min, max, médian, blur ...).

from PIL import Image import ImageFilter

im = Image.open('cours.png') out = im.filter(ImageFilter.BLUR) out.save('blur.jpg', "JPEG")

out2 = im.filter(ImageFilter.MinFilter) out2.save('min.jpg', "JPEG")

out3 = im.filter(ImageFilter.MedianFilter) out3.save('median.jpg', "JPEG")

image blur

min median

4. manipulation

4.1. Comment créer une image avec son symétrique ?

L'exemple de ce combat de boxe, est un parfait exemple de manipulation. On crée une image de taille double, on génère une image symétrique axiale de l'image originale et on copie le tout dans la nouvelle image.

from PIL import Image

im = Image.open('boxe.png') w,h=im.size

box = (0, 0, w, h) src = im.crop(box)

out = im.resize((w*2,h)) out.paste(src,(0,0,w,h))

src=im.transpose(Image.FLIP_LEFT_RIGHT) out.paste(src,(w,0,2*w,h))

out.save('combat.png')

image resultat

(6)

4.2. Comment créer une image avec un fond d'une couleur donnée?

Donnez la taille et la couleur soit sous forme de nom, soit en RVB.

from PIL import Image import ImageDraw

im = Image.new("RGB", (400,200), "blue") im = Image.new("RGB", (400,200), "#3FA03D") draw = ImageDraw.Draw(im)

del draw

im.save("create.png", "PNG")

image générée

4.3. Comment dessiner dans une image ?

Les informations pour le dessin avec PIL se trouvent ici

http://www.pythonware.com/library/pil/handbook/imagedraw.htm

from PIL import Image import ImageDraw

im = Image.new("RGB", (400,200), "lightgrey") draw = ImageDraw.Draw(im)

draw.line((0, 0) + im.size, fill="red")

draw.rectangle(((100,100),(130,200)),fill="blue") del draw

im.save("trace.png", "PNG")

image générée

(7)

4.4. Comment copier plusieurs modeles dans image ?

from PIL import Image import ImageDraw

im = Image.new("RGB", (500,400), "white") draw = ImageDraw.Draw(im)

into = Image.open("explication.png") w,h=into.size

im.paste(into, (0,0,w,h))

im.paste(into, (300,0,300+w,h))

im.paste(into, (200,200,200+w,200+h)) del draw

im.save("dessin.jpg", "JPEG")

image résultat

4.5. Comment écrire du texte dans une image ?

#-*- coding:utf8 -*- import sys

import Image import ImageDraw import ImageFont

txt = 'C\'est mon texte!' txt2 = '??,??!'

font = ImageFont.truetype('verdanai.ttf',24) font2 = ImageFont.truetype('simsun.ttc',24) im = Image.new("RGBA",(300,200),(100,155,100)) draw = ImageDraw.Draw(im)

#draw.text( (0,50), u'??,??!', font=font)

draw.text( (0,50), unicode(txt,'UTF-8'), font=font) draw.text( (0,100), unicode(txt2,'UTF-8'), font=font2) del draw

im.save('font.png', "PNG")

image générée

Références

Documents relatifs

une

une moustache 13.. une moustache

des chaussettes 13.. des chaussettes

une imprimante 11.. une imprimante

En utilisant le cercle chromatique (document 2) et le document 3, expliquer comment un peintre pointilliste, qui n’utiliserait que des peintures bleue, rouge et verte, obtient sur

a- Une activité sportive qui développe le bien-être chez un individu b- Une discipline scolaire qui développe les capacités chez un individu c- Une activité sportive qui

Un pixel est tellement petit que notre œil superposera la partie rouge, la partie verte et la partie bleue du pixel, voilà pourquoi nous voyons des pixels de différentes couleurs..

[Stefan Wörz, Karl Rohr Localization of anatomical point landmarks in 3D medical images by fitting 3D parametric intensity models, Medical Image Analysis Volume 10, Issue 1,