2017-09-26 8 views
0

Je me demandais s'il était possible en Python de créer un programme capable de prendre le nombre de pages dans les fichiers .tiff, puis de sortir exactement combien de pages c'est tout ensemble. Je suis nouveau à Python, mais je veux essayer d'écrire du code qui peut le faire. Est-ce possible? Si oui, pourriez-vous me diriger dans la direction de l'écriture? De mon googling, il semble que je devrais utiliser PIL.Nombre total de pages Python dans le groupe de fichiers TIFF multi-pages

Je ne pense pas que ce soit possible mais ... Y at-il des informations de métadonnées que Python peut prendre à partir d'un fichier .tiff et simplement les ajouter tous ensemble à partir de tous les fichiers?

Merci pour l'aide!

+0

https://stackoverflow.com/questions/26660415/pillow-and-multi-page-tiffs –

+0

Copie possible de [TIFFS (bas) et multi-page TIFFS] (https://stackoverflow.com/questions/ 26660415/oreiller-et-multi-page-tiffs) –

Répondre

1

Oui, c'est possible.

This answer fournit une direction sur la façon de jeter un coup d'œil aux données TIFF à plusieurs images avec Python Imaging Library. La réponse de Nathan donne également les détails de cette approche.

Il est théoriquement possible de regarder simplement les données d'en-tête des fichiers. Pour cela, vous voudrez research la structure binaire du format TIFF et probablement utiliser Python's built-in struct library pour décompresser les données d'en-tête. Mais c'est un truc assez avancé.

Avec l'une ou l'autre des solutions, vous voulez qu'une boucle passe par les fichiers TIFF. This answer va vous mettre sur le bon chemin pour trouver les fichiers dans un répertoire et les parcourir.

Mise à jour:

est ici une approximation grossière d'une solution complète:

import os 
from PIL import Image 

count = 0 
tiffs_path = "c:\\wherever" 

for filename in os.listdir(tiffs_path): 
    if filename.endswith(".tiff"): 
     img = Image.open(filename) 
     while True: 
      try: 
       img.seek(i) 
      except EOFError: 
       break  
      count += 1   

print count 

Cela suppose tous les fichiers TIFF que vous aimez sont c:\wherever.

+0

Merci beaucoup pour le code, j'apprécie! J'ai essayé de changer certaines choses parce que je recevais des erreurs de syntaxe. Je l'ai posté comme un autre commentaire parce que je ne savais pas comment mettre la mise en forme correcte comme un commentaire. – MKatana

1

Essayez quelque chose comme ceci.

from PIL import Image 
img = Image.open("picture.tiff") 
i = 0                   
while True: 
    try: 
     img.seek(i) 
    except EOFError: 
     break  
    i += 1   
print i