2017-09-26 1 views
0

파이썬에서 .tiff 파일 내의 페이지 수를 취하고 정확히 몇 페이지를 출력 할 수 있는지 궁금합니다. 그것은 모두 함께 있습니다. 필자는 Python을 처음 사용하지만이 작업을 수행 할 수있는 코드를 작성하려고합니다. 이것이 가능한가? 그렇다면 쓰기 방향으로 나를 가리 키시겠습니까? 내 인터넷 검색에서 PIL을 사용해야 할 것 같습니다.파이썬 카운트 멀티 페이지 TIFF 파일 그룹의 총 페이지 수

나는 이것이 가능하다고 생각하지 않지만 ... 파이썬이 .tiff 파일에서 취할 수있는 모든 메타 데이터 정보가 있으며 모든 파일에서 모든 정보를 추가하기 만하면됩니까?

도움 주셔서 감사합니다.

+0

https://stackoverflow.com/questions/26660415/pillow-and-multi-page-tiffs [PIL (저) 및 멀티 페이지 TIFFS ( –

+0

의 가능한 복제 https://stackoverflow.com/questions/ 26660415/pillow-and-multi-page-tiffs) –

답변

1

예, 가능합니다.

This answer은 파이썬 이미징 라이브러리로 다중 이미지 TIFF 데이터를 들여다 보는 방법에 대한 지침을 제공합니다. 네이선의 대답은 또한 그 접근법에 대한 구체적인 내용을 제공합니다.

이론적으로 파일 헤더 데이터 만 볼 수 있습니다. 이를 위해서는 research TIFF 형식의 이진 구조를 사용하고 아마도 Python's built-in struct library을 사용하여 헤더 데이터의 압축을 풀어야합니다. 그러나 그것은 꽤 발전된 것들입니다.

두 가지 방법 중 하나를 사용하면 루프가 TIFF 파일을 통과해야합니다. This answer은 올바른 경로로 설정하여 디렉토리에있는 파일을 찾아 루프 처리합니다.

업데이트 :

이 여기에 완벽한 솔루션의 대략적인 근사치입니다 :

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 

c:\wherever에 대해 신경 모든 TIFF 파일을 가정합니다.

+0

코드에 감사드립니다. 고맙습니다! 구문 오류가 발생했기 때문에 몇 가지 사항을 변경하려고 시도했습니다. 나는 주석으로 올바른 형식을 지정하는 방법을 모르기 때문에 다른 주석으로 게시했습니다. – MKatana

1

다음과 같이 시도해보십시오.

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