![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
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.