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 :

  1. Définir les balises TIFF standard et leurs attributs
  2. Fournir une correspondance entre les noms de balises et les ID
  3. Décrire les types de données des balises et les plages de valeurs
  4. 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 :

  1. ID de balise (entier)
  2. Nom de balise (chaîne)
  3. Type de données (entier, correspondant à la spécification TIFF)
  4. Longueur de la valeur (entier)
  5. 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

from PIL.TiffTags import TAGS_V2

# 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

from PIL.TiffTags import LOOKUP

# 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 import Image
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 import Image
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 :

  1. Comment accéder aux balises TIFF standard et les interroger
  2. La structure de données des informations de balise
  3. Comment lire et écrire des balises dans des applications pratiques
  4. 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