PIL
Frequently-Asked QuestionsFAQ Revised: Friday 26 June 2009 18:17:03
Note the use of try / except in order to properly handle errors. Thereafter, the PIL examples go to the essentials. It would be good to manage the exceptions in this way.
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
The display shows the following:
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')
Example:
The possible formats are :
JPEG | |
PNG | |
BMP |
Example:
from PIL import Image im = Image.open('cours.png') im.save('cours.jpg', "JPEG") im.save('cours.bmp', "BMP")
image | JPEG | BMP |
Simply use the thumbnail function in the following way:
from PIL import Image im = Image.open('aider.png') im.thumbnail([128,128], Image.ANTIALIAS) im.save('aider_small.png', "PNG")
or
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")
We use rotate followed by the rotation angle.
from PIL import Image im = Image.open('explication.png') out = im.rotate(45) out.save('rotate.png')
image | rotation |
We use 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° |
A transformation with ROTATE_90 option is equivalent to a rotation with the rotate function.
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 | geometric transformation |
from PIL import Image im = Image.open('explication.png') out = im.resize((100,120)) out.save('resize.png'
image | result |
The ImageFilter module can apply several filter. The url imagefilter describes what can be done. (min, max, médian, blur filters...).
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 | result |
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")
generated image |
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")
generated 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 | result |
#-*- 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")
generated image |
Copyright (c) 2009 Jean-Louis BICQUELET
This list of questions and answers was generated by makefaq.