Comment tourner une image en python avec le module pillow ?

Published: 19 avril 2019

DMCA.com Protection Status

Exemples de comment tourner une image en python avec le module pillow

Tourner une image en gardant la même taille

Pour tourner une image, il existe la fonction pillow rotate(), exemple

Comment tourner une image en python avec le module pillow ? Comment tourner une image en python avec le module pillow ?
Comment tourner une image en python avec le module pillow ?

from PIL import Image

im = Image.open("eiffel_tower.jpg")

print(im.size)

im = im.rotate(45)

print(im.size)

im.save("eiffel_tower_rotate_01.jpg")
im.show()

Tourner une image

On peut jouter l'option "expand = 1" pour tourner une image sans la couper:

Comment tourner une image en python avec le module pillow ?
Comment tourner une image en python avec le module pillow ?

from PIL import Image

im = Image.open("eiffel_tower.jpg")

print(im.size)

im = im.rotate(45, expand = 1)

print(im.size)

im.save("eiffel_tower_rotate_02.jpg")
im.show()

Tourner une image (changer la couleur de fond)

On peut aussi changer la couleur de fond depuis la version 5.2 de PIL:

 >>> import PIL
 >>> PIL.__version__
 '5.2.0'

exemple

from PIL import Image

im = Image.open("eiffel_tower.jpg")

im = im.rotate(45, expand = 1, fillcolor='white')

im.save("eiffel_tower_rotate_02.jpg")
im.show()

Tourner une image verticalement

Pour retourner une image avec pillow une solution est d'utiliser la fonction rotate(), exemple:

from PIL import Image

im = Image.open("eiffel_tower.jpg")

im = im.rotate(180)

im.save("eiffel_tower_fliped_vertically.jpg")

Comment tourner une image en python avec le module pillow ? Comment tourner une image en python avec le module pillow ?
Comment tourner une image en python avec le module pillow ?

On peut aussi utiliser la fonction flip():

from PIL import Image
from PIL import ImageOps

im = Image.open("eiffel_tower.jpg")

im = ImageOps.flip(im)

im.save("eiffel_tower_fliped_vertically.jpg")

Autre solution, utiliser numpy et la fonction flipud, illustration:

import numpy as np 
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

img = mpimg.imread('eiffel_tower.jpg')

img2 = np.flipud(img)
plt.imshow(img2)

plt.savefig("eiffel_tower_fliped_vertically.png", dpi=200)
plt.show()

Note: pour sauvegarder une figure avec matplotlib sans les axes voir: Comment sauver une image seule sans les contours ou les labels avec matplotlib ?

Références

Liens Site
numpy.flipud numpy doc
Comment sauver une image seule sans les contours ou les labels avec matplotlib ? science-emergence article
Image Module illow.readthedocs.io
ImageOps Module pillow.readthedocs.io
Flopped image wikipedia
Flipped image wikipedia
Flip An Image docs.gimp.org
PIL - Images not rotating stackoverflow
Image rotation in Pillow stackoverflow
pixabay pixabay
Image

of