Module TiffTags de Pillow
TiffTags est un sous-module de la bibliothèque de traitement d'images Python Pillow (PIL), spécifiquement utilisé pour gérer les informations de balises dans les fichiers image TIFF (Tagged Image File Format).
TIFF est un format d'image bitmap flexible qui prend en charge plusieurs méthodes de compression et espaces colorimétriques, largement utilisé dans le domaine professionnel du traitement d'images.
Dans les fichiers TIFF, divers attributs et métadonnées de l'image sont stockés dans des balises, et le module TiffTags fournit des fonctionnalités pour accéder à ces balises et les manipuler.
Méthode d'import :
from PIL.TiffTags import TAGS_V2
Fonctions principales
Le module TiffTags fournit principalement les fonctions suivantes :
- Définir les balises TIFF standard et leurs attributs
- Fournir une correspondance entre les noms de balises et les ID
- Décrire les types de données des balises et les plages de valeurs
- Prendre en charge le traitement des balises personnalisées
Méthodes principales expliquées
Méthodes principales du module TiffTags
Voici les méthodes les plus couramment utilisées et leurs descriptions dans le module TiffTags :
| Méthode/Attribut | Description | Type de retour | Exemple |
|---|---|---|---|
TiffTags.TAGS_V2 |
Dictionnaire contenant toutes les balises TIFF standard, avec les ID de balises comme clés et les informations de balise comme valeurs | dict | {256: (256, 'ImageWidth', 4, 1, None), ...} |
TiffTags.TAGS |
Dictionnaire de balises TIFF hérité (conservé pour compatibilité) | dict | Identique à TAGS_V2 |
TiffTags.LOOKUP |
Dictionnaire associant les noms de balises aux ID | dict | {'ImageWidth': 256, ...} |
TiffTags.IFD |
Collection de balises IFD (Image File Directory) | dict | Contient les balises liées à l'IFD |
TiffTags.CUSTOM_TAGS |
Dictionnaire utilisé pour stocker les balises personnalisées | dict | Défini par l'utilisateur |
Structure des informations de balise
Les informations de chaque balise TIFF sont un tuple contenant 5 éléments :
- ID de balise (entier)
- Nom de balise (chaîne)
- Type de données (entier, correspondant à la spécification TIFF)
- Longueur de la valeur (entier)
- Valeur par défaut ou notes spéciales (facultatif)
Table de correspondance des types de données
| Code de type | Type de données | Description |
|---|---|---|
| 1 | BYTE | Entier non signé 8 bits |
| 2 | ASCII | Caractères ASCII 7 bits |
| 3 | SHORT | Entier non signé 16 bits |
| 4 | LONG | entier non signé de 32 bits |
| 5 | RATIONAL | Deux LONGs, représentant une fraction |
| 6 | SBYTE | Entier signé de 8 bits |
| 7 | UNDEFINED | données non définies de 8 bits |
| 8 | SSHORT | Entier signé de 16 bits |
| 9 | SLONG | Entier signé 32 bits |
| 10 | SRATIONAL | Deux SLONGs, représentant une fraction signée |
| 11 | FLOAT | nombre à virgule flottante IEEE 32 bits |
| 12 | DOUBLE | nombre à virgule flottante IEEE 64 bits |
Exemples d'applications pratiques
Exemple 1 : Afficher toutes les balises TIFF
Exemple
# Afficher toutes les balises TIFF standard
for tag_id, tag_info in TAGS_V2.items():
print(f"ID : {tag_id}, Nom : {tag_info[1]}, Type : {tag_info[2]}")
Exemple 2 : Trouver l'ID du tag par nom
Exemple
# Trouver l'ID du tag "Artist"
artist_tag_id = LOOKUP.get('Artist')
print(f"ID du tag Artist : {artist_tag_id}") # Sortie : 315
Exemple 3 : Lire les informations sur les tags du fichier TIFF
Exemple
from PIL.TiffTags import TAGS
# Ouvrir le fichier TIFF
with Image.open('example.tif') as img:
# Obtenir tous les tags
if hasattr(img, 'tag'):
for tag_id, value in img.tag.items():
tag_name = TAGS.get(tag_id, tag_id)
print(f"{tag_name}: {value}")
Utilisation avancée
Gestion des balises personnalisées
Exemple
from PIL.TiffTags import TAGS_V2, CUSTOM_TAGS
# Définir des balises personnalisées
CUSTOM_TAGS = {
50000: (50000, 'MyCustomTag', 2, 1, None)
}
# Fusionner les balises standard et les balises personnalisées
ALL_TAGS = {**TAGS_V2, **CUSTOM_TAGS}
# Enregistrer le fichier TIFF à l'aide de balises personnalisées
img = Image.new('RGB', (100, 100))
img.save('custom.tif', tiffinfo={50000: 'CustomValue'})
FAQ
Q1 : Pourquoi certaines balises TIFF ne peuvent-elles pas être lues ?
A1 : Cela peut être dû au fait que la balise n'est pas définie dans le TAGS_V2 standard, ou qu'elle utilise une balise privée. Vous pouvez essayer de vérifier la spécification du fichier ou contacter le créateur du fichier pour obtenir la définition de la balise.
Q2 : Comment connaître le type de données d'une balise ?
A2 : Vous pouvez interroger le type de données de chaque balise via le dictionnaire TAGS_V2. Par exemple,TAGS_V2[256][2]renverra le code de type de données de la balise ImageWidth.
Q3 : Les balises TIFF peuvent-elles être modifiées ?
A3 : Oui, vous pouvez utiliser la méthode save de Pillow avec le paramètre tiffinfo pour modifier ou ajouter des balises. Toutefois, notez que toutes les balises ne peuvent pas être modifiées ; certaines sont en lecture seule.
Résumé
Le module TiffTags est un outil important de la bibliothèque Pillow pour la gestion des métadonnées d'images TIFF. À travers cet article, vous devriez avoir appris :
- Comment accéder aux balises TIFF standard et les interroger
- La structure de données des informations de balise
- Comment lire et écrire des balises dans des applications pratiques
- Comment gérer des balises personnalisées
Après avoir maîtrisé ces connaissances, vous pourrez gérer plus efficacement les informations de métadonnées dans les fichiers image TIFF.
Autres extensions