Avec matplotlib on a vu comment ajuster automatiquement les bords d'une figure dans un précèdent article. Cependant avec matplotlib les possibilités pour ajuster une figure sont un peu limitées et le résultat parfois insatisfaisant. Pour remédier à cela il est possible d'utiliser le module python: PIL qui permet de travailler facilement avec des images. Voici un exemple simple de script python permettant de rogner une image (la variable add_pad définie la distance entre la figure et les bords de l'image):
import Image
im = Image.open("input.png") #Can be many different formats.
pix = im.load()
im_size = im.size
print im_size #Get the width and hight of the image for iterating over
x_min = im_size[0]
x_max = 0
y_min = im_size[1]
y_max = 0
for x in range(im_size[0]):
for y in range(im_size[1]):
if pix[x,y] != (255, 255, 255, 255) :
if x < x_min :
x_min = x
if x > x_max :
x_max = x
if y < y_min :
y_min = y
if y > y_max :
y_max = y
print x_min, x_max
print y_min, y_max
add_pad = 40
x_min = x_min - add_pad
x_max = x_max + add_pad
y_min = y_min - add_pad
y_max = y_max + add_pad
left = x_min
top = y_min
width = x_max - x_min
height = y_max - y_min
box = (left, top, left+width, top+height)
area = im.crop(box)
area.show()
print area.size
area.save("input_adjusted.png", "PNG")
Recherches associées
Liens | Site |
---|---|
PIL | PIL module |
Trouble using python PIL library to crop and save image | stackoverflow |
Read the RGB value of a given pixel in Python, Programatically | stackoverflow |
Python: PIL replace a single RGBA color | stackoverflow |
Using PIL to make all white pixels transparent? | stackoverflow |
PIL Best Way To Replace Color? | stackoverflow |
Remove background colour from image using Python/PIL | stackoverflow |