MODULE PIL
FONCTIONS

Image est la classe la plus importante du module PIL.

Fonction

Effet

im=Image.open(fichier)

pour ouvrir un fichier contenant une image, on utilise la fonction (ligne 5)).

im.format()

Donne le format de l’image : png, jpeg, bmp,….

im.size()

La taille est un tuple (largeur hauteur)

im.mode()

Donne le mode l’image : RGB, RGBA ,L, P

im.show()

Affiche l’image.

im.save("nom","format")

Sauvegarde l’image avec le nom et le format choisit.

MODE D’IMAGES :

Note

Modes d’images : Le mode d’une image définit le type et la profondeur d’un pixel dans l’image. La sortie actuelle soutient le suivant Modes standard : 1 (pixels de 1 particule, noirs et blancs, stocké avec un pixel par octet) L (pixels de 8 particules, noir et blanc) P (pixels de 8 particules, dressés la carte à un autre mode utilisant une palette colorée) RGB (3x8-pixels) RGBA (4x8-pixels, couleur avec masque de transparence) CMYK (4x8-bit-pixels) JPEG PIL fournit aussi l’appui limité pour quelques modes spéciaux, y compris LA (L avec l’alpha), RGBX (la vraie couleur avec la remplissage) Et RGBA (vraie couleur avec alpha).

TAILLE D’IMAGES :

python -m pip install --upgrade Pillow

Programme

Résultat

#0805 taille photo.py
from PIL import Image
from os import*
#nom du repertoire où l'on se situe
repertoire=getcwd()
fichier=repertoire+'/1.png'
im = Image.open(fichier)
print ("Nom du fichier : ",fichier,'\n'\
         "Format :" ,im.format,'\n'\
         "taille","%dx%d" % im.size,'\n'\
         "Mode : ",im.mode)
print(fichier,im.format,im.size,im.mode)
Nom du fichier :  D:\python\python 2017\08 manipuler fichiers/1.png
Format : PNG
taille 1000x640
Mode :  RGBA
D:\python\python 2017\08 manipuler fichiers/1.png PNG (1000, 640) RGBA
_images/image190.png

AFFICHAGE D’UNE IMAGE :

Programme

Résultat

programme     Résultat
from PIL import Image
try:
       im = Image.open('1.png')
       im.show()
except:
       pass
_images/image192.png
DECOMPOSITION D’UNE IMAGE :

Note

rgba rgba(0,0,0,0). La dernière valeur (l’alpha) indiquant le degré d’opacité entre 0 et 1.

Fonction

Effet

#0808 decomposition.py from PIL import Image img = Image.open("2.png") # Récupération des différentes #composantes de l'image print( img.split() ) r,g,b,a=img.split() #enregistre l'image en rouge r.save('rouge.jpg') #enregistre l'image en vert g.save('vert.jpg') #enregistre l'image en bleu b.save('bleu.jpg') rouge=Image.open('rouge.jpg') rouge.show() vert=Image.open('vert.jpg') vert.show() bleu=Image.open('bleu.jpg') bleu.show()
_images/image194.png _images/image198.png
REDIMENSION ET DECOUPE :

Redimensionnement et découpe d’une image :

Fonction Effet
im.resize(largeur,hauteur)
Redimensionne l’image en largeur et hauteur.
im_out=Image.new(mode,nom)
img_out est une nouvelle image avec le mode et le nom donnés en paramètres.
p=im.getpixel(x,y)
p est le pixel récupéré de la colonne x et de la ligne y.
img_out.putpixel((x,y),p)
le pixel p va être installé sur la colonne x et la ligne y de l’image img_out
programme Résultat
#0808 redimensionne decoupe.py import os #bibliothèque pour le travail sur les dossier from PIL.Image import * from PIL import Image def Tableau(ligne,colonne,liste): "fabrication d'un tableau lignes colonnes" tableau=ligne*[0] for ln in range(ligne):table[ln]=colonne*[0] for ln in range(0,ligne): for cn in range(0,colonne): tableau[ln][cn]=liste[clne*ln+cn] return tableau def redimensione(nom,nom_image,largeur,hauteur): "redimensionne une image" img_in=Image.open(nom_image) C,L=img_in.size img_out=Image.new("RGB",(largeur,hauteur)) img_out=img_in.resize((largeur,hauteur)) img_out.save(nom+'.png') return img_out def decoupe(nom_image,largeur,hauteur): "decoupe une image en 20 images" img_in=Image.open(nom_image) C,L=img_in.size nbcol=int(C/largeur) nblig=int(L/hauteur) print(nbcol,C,largeur,nblig,L,largeur) col=C//nbcol colo=C//col lig=L//nblig lign=L//lig img_out=Image.new("RGB",(col,lig)) for i in range(int(nblig)): ligne=i ldebut=ligne*lig lfin=lig+ldebut for j in range(nbcol): colonne=j cdebut=colonne*col cfin=cdebut+col for ln in range(ldebut,lfin): for cn in range(cdebut,cfin): p=img_in.getpixel((cn,ln)) ccn=cn%col lln=ln-lig*ligne img_out.putpixel((ccn,lln),p) numero=i*nbcol+j+1 print(p) img_out.save(str(numero)+'s.png') rep_cour=os.getcwd() #répertoire courant print ("répertoire courant :",rep_cour) os.chdir(rep_cour) #on s'y déplace ! print(os.getcwd()) #vérification print ("tout est en ordre !") nom_image=input("Donner le nom de l'image : ") img_in=Image.open(nom_image) print ("Nom de l'image :",nom_image) print("Format de l'image :",img_in.format) #tuple (Colonnes,Lignes) print ("Taille de l'image :",img_in.size) print ("Mode de l'image :",img_in.mode) #niveaux de gris nom=input("Donner le nom de la nouvelle image : ") largeur=int(input("Donner la nouvelle largeur : ")) hauteur=int(input("Donner la nouvelle hauteur : ")) decoupe(nom_image,largeur,hauteur) img_out=redimensione(nom,nom_image,largeur,hauteur)

Image initiale

Images redimensionnées.

_images/pil04.png

D:\python\08manipulerfichiers\redimensione tout est en ordre ! Donner le nom de l'image : grande.png Nom de l'image : grande.png Format de l'image : PNG Taille de l'image : (600, 300) Mode de l'image : RGBA Donner le nom de la nouvelle image : petite Donner la nouvelle largeur : 200 Donner la nouvelle hauteur : 100 3 600 200 3 300 200 (0, 0, 0, 255) (0, 0, 0, 255) (244, 244, 244, 255) (0, 0, 0, 255) (0, 0, 0, 255) (244, 244, 244, 255) (0, 0, 0, 255) (0, 0, 0, 255) (244, 244, 244, 255)