web-dev-qa-db-fra.com

Liste des "modes" d'image

En parcourant PIL (et en relation avec cette question ), où puis-je obtenir une liste complète des modes d'image? Je vois "RGB", "RGBX", mon code a "BGRX" en quelque sorte, même si ce n'est pas mentionné dans les documents PIL que je peux voir. Comment puis-je voir lequel est qui, ce que PIL prend en charge et quels modes appropriés sélectionner lors de l'interaction avec les appels d'API Windows, par exemple?

Fondamentalement, je connais très peu les modes d'image et j'aimerais en savoir plus que les lettres à mettre pour que cela fonctionne comme par magie.

36
Claudiu

Il existe deux concepts distincts dans Pillow, avec des noms prêtant à confusion:

"Modes"

Ceux-ci sont répertoriés sur https://pillow.readthedocs.io/en/latest/handbook/concepts.html#modes .

Par ces documents:

Le mode d'une image définit le type et la profondeur d'un pixel dans l'image.

Ce type de "mode" est ce qui est exposé à travers l'attribut .mode D'un Image, peut être modifié via la méthode .convert(), et peut être passé à des méthodes qui prennent un mode paramètre. Ce ne sont pas les mêmes que les "modes bruts".

"Modes bruts"

Celles-ci sont utilisées en interne par le décodeur brut , qui convertit les données non compressées d'un fichier image dans un format qu'un objet PIL Image peut comprendre. Il existe plusieurs fois plus de "modes bruts" que de "modes", et ils transmettent des informations non seulement sur le type (coloré ou en niveaux de gris) et la profondeur de bits des pixels dans une image, mais également sur leur disposition dans le fichier. Par exemple, le mode brut RGB;L Est documenté comme signifiant "Couleurs vraies 24 bits, ligne entrelacée (d'abord tous les pixels rouges, puis tous les pixels verts, enfin tous les pixels bleus). "

Comme indiqué dans les documents liés ci-dessus (et également dans l'ancien documentation PIL ), une liste des modes bruts peut être trouvée dans Unpack.c. Vous trouverez la liste vers la fin du fichier.

Unpack.c De la branche principale actuelle de Pillow: https://github.com/python-pillow/Pillow/blob/master/src/libImaging/Unpack.c

Unpack.c À partir de la version finale de PIL: http://svn.effbot.org/public/tags/pil-1.1.7/libImaging/Unpack.c

27
Mark Ransom