Oreiller Python - Travailler avec des images

Ce chapitre décrit des sujets tels que la lecture et l'enregistrement d'une image dans Pillow.

Lire une image

Lire et écrire des images à l'aide de la bibliothèque d'oreillers est très simple, avec l'aide de PIL.Image module function.

Syntaxe

Image.open(fp, mode=’r’)

  • fp- Un nom de fichier (chaîne), un objet pathlib.Path ou un objet fichier. L'objet fichier doit implémenter les méthodes read (), seek () et tell () et être ouvert en mode binaire.

  • mode - C'est un argument optionnel, s'il est donné, doit être «r».

  • Return value - Un objet Image.

  • Error - Si le fichier est introuvable ou si l'image ne peut pas être ouverte et identifiée.

Exemple

Voici un exemple très simple, où nous allons ouvrir une image de n'importe quel format (nous utilisons.jpg), affichez-le dans une fenêtre puis enregistrez-le (emplacement par défaut) avec un autre format de fichier (.png).

from PIL import Image
image = Image.open('beach1.jpg')
image.show()
image.save('beach1.bmp')
image1 = Image.open('beach1.bmp')
image1.show()

Dans l'exemple ci-dessus, nous importons le module Image de la bibliothèque PIL, puis appelons le Image.open()pour lire une image à partir du disque, qui renvoie un type de données d'objet image. Il déterminera automatiquement le type de fichier en regardant le contenu du fichier. Pour la lecture, leopen() fonction accepte un filename(string), une path object ou un image(file) objet.

Ainsi, en utilisant la fonction open (), nous lisons réellement l'image. Image.open () lira l'image et obtiendra toutes les informations pertinentes de l'image.

Production

Si vous enregistrez le programme ci-dessus sous le nom Example.py et que vous l'exécutez, il affiche les images d'origine (.jpg) et réenregistrées (.bmp) à l'aide de l'utilitaire d'affichage PNG standard, comme suit -

Actual image

Resaved image (.bmp)

Enregistrer une image

La fonction save () écrit une image dans un fichier. Comme pour la lecture (fonction open ()), la fonction save () accepte un nom de fichier, un objet chemin ou un objet fichier qui a été ouvert en écriture.

Syntaxe

Image.save(fp, format=None, **params)

Où,

  • fp - Un nom de fichier (chaîne), un objet pathlib.Path ou un objet fichier.

  • format- Remplacement de format facultatif. S'il est omis, le format à utiliser est déterminé à partir de l'extension du nom de fichier. Si un objet fichier a été utilisé à la place d'un nom de fichier, ce paramètre doit toujours être utilisé.

  • options - Paramètres supplémentaires pour l'écrivain d'image.

  • Return value - Aucun

  • KeyError - Si le format de sortie n'a pas pu être déterminé à partir du nom de fichier, utilisez l'option format pour résoudre ce problème.

  • IOError - Si le fichier n'a pas pu être écrit, le fichier peut avoir été créé et contenir des données partielles.

En bref, la syntaxe ci-dessus enregistrera l'image sous le nom de fichier donné. Si aucun format n'est spécifié, il est basé sur l'extension de nom de fichier actuelle. Pour fournir les instructions supplémentaires à l'auteur, nous utilisons des options de mots clés.

image.save('beach1.bmp')

Dans l'exemple ci-dessus, il enregistre le fichier en fonction de l'extension de fichier pour déterminer le type d'image, par exemple - ce qui précède va créer un fichier bmp dans notre répertoire de travail actuel.

Vous pouvez également spécifier explicitement le type de fichier comme deuxième paramètre -

image.save('beach1.gif', 'GIF')