
PIL Frequently-Asked QuestionsFAQ Revised: Friday 26 June 2009 18:17:03
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
from PIL import Image
import ImageFilter
im = Image.open('cours.png')
im.show()
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:
![]() |
![]() |
![]() |
![]() |
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 |
![]() |
![]() |
![]() |
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 |
![]() |
![]() |
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")
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 |
![]() |
![]() |
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 |
![]() |
![]() |
from PIL import Image
im = Image.open('explication.png')
out = im.resize((100,120))
out.save('resize.png'
| image | resultat |
![]() |
![]() |
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 |
![]() |
![]() |
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 |
![]() |
![]() |
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 | ![]() |
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 | ![]() |
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 | resultat |
![]() |
![]() |
#-*- 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 | ![]() |
Copyright (c) 2009 Jean-Louis BICQUELET
This list of questions and answers was generated by makefaq.