Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Docker
- 더현대서울 맛집
- AI 경진대회
- 캐치카페
- ChatGPT
- dacon
- github
- 편스토랑
- 자연어처리
- 금융문자분석경진대회
- gs25
- 프로그래머스 파이썬
- leetcode
- Baekjoon
- 프로그래머스
- SW Expert Academy
- programmers
- 데이콘
- 코로나19
- Kaggle
- 우분투
- Git
- 백준
- Real or Not? NLP with Disaster Tweets
- ubuntu
- 파이썬
- 편스토랑 우승상품
- 맥북
- PYTHON
- hackerrank
Archives
- Today
- Total
솜씨좋은장씨
[Python] pdf 파일을 이미지로 변환하는 여러가지 방법 ( feat. pdf2image, tifffile, wand, ImageMagick ) 본문
Programming/Python
[Python] pdf 파일을 이미지로 변환하는 여러가지 방법 ( feat. pdf2image, tifffile, wand, ImageMagick )
솜씨좋은장씨 2020. 12. 19. 16:32728x90
반응형
각 페이지별 이미지 변환 ( pdf to jpg ) - pdf2image 활용
여러 페이지로 구성되어있는 pdf 파일을 각 페이지별 이미지로 변환하는 방법에 대해서 적어보려 합니다.
먼저 이 과정을 진행하기 위해서 필요한 라이브러리를 설치합니다.
pip install pdf2image
그 다음 아래의 코드를 활용하여 pdf파일의 각 페이지를 jpg 이미지로 변환하면 됩니다.
#-*- coding:utf-8 -*-
from pdf2image import convert_from_path
file_name = "pdf파일.pdf"
pages = convert_from_path("./source/" + file_name)
for i, page in enumerate(pages):
page.save("./source/"+file_name+str(i)+".jpg", "JPEG")
만약 pdf파일의 페이지가 3페이지라면 source 디렉토리에 파일이름1.jpg, 파일이름2.jpg, 파일이름3.jpg 이렇게 저장됩니다.
여러 페이지를 담은 pdf 파일을 multipage tiff 파일로 변환하기 ( pdf to multipage tiff ) - tifffile
먼저 위의 각 페이지별 이미지 전환 과정을 모두 진행하여 각 페이지별 jpg 파일을 source 디렉토리에 저장하여 둡니다.
필요한 라이브러리를 설치합니다.
pip install tifffile
그 다음 아래의 코드를 활용하여 위의 과정에서 저장한 source 디렉토리에 있는 jpg 파일을 활용하여
multipage tiff 파일을 생성합니다.
#-*- coding:utf-8 -*-
from __future__ import print_function
import glob
from PIL import Image
import tifffile
import numpy
def PIL2array(img):
""" Convert a PIL/Pillow image to a numpy array """
return numpy.array(img.getdata(), numpy.uint8).reshape(img.size[1], img.size[0], 3)
FRAMES = []
FIRST_SIZE = None
OUT_NAME = "./source/test/test.tiff"
filelist = glob.glob("source/test/*.jpg")
for fn in filelist:
img = Image.open(fn)
if FIRST_SIZE is None:
FIRST_SIZE = img.size
if img.size == FIRST_SIZE:
print ("Adding:", fn)
FRAMES.append(img)
else:
print ("Discard:", fn, img.size, "<>", FIRST_SIZE)
print("Writing", len(FRAMES), "frames to", OUT_NAME)
with tifffile.TiffWriter(OUT_NAME) as tiff:
for img in FRAMES:
tiff.save(PIL2array(img), compress=6)
print("Done")
여러 페이지를 담은 pdf 파일을 multipage tiff 파일로 변환하기 ( pdf to multipage tiff ) - wand, ImageMagick
위의 두 가지 방법 이외에도 한번에 pdf를 multipage tiff 로 바꿀 수 있는 방법도 있습니다.
이 방법은 설치가 조금 까다로운 반면에 조금 더 간편하게 변환이 가능합니다.
현재는 Ubuntu 에서만 제대로 실행됩니다. Windows도 해결되는대로 해결방법과 함께 업데이트 하겠습니다.
먼저 필요 라이브러리를 설치합니다.
from wand.api import library
from wand.image import Image
def convert_file(filename):
with Image(filename=filename, resolution=200) as img:
img.type = 'grayscale'
img.compression = "group4"
library.MagickResetIterator(img.wand)
for idx in range(library.MagickGetNumberImages(img.wand)):
library.MagickSetIteratorIndex(img.wand, idx)
img.alpha_channel = 'off'
img.save(filename="test2.tiff")
if __name__=="__main__":
convert_file("./test.pdf")
읽어주셔서 감사합니다.
'Programming > Python' 카테고리의 다른 글
[Python] wand.exceptions.PolicyError: not authorized `./test.pdf' @ error/constitute.c/ReadImage/412 해결방법 (0) | 2020.12.29 |
---|---|
[Python] 자주 활용하는 정규식 모음 (0) | 2020.12.29 |
[Python] logging 중복 로그 해결하는 방법 (0) | 2020.12.17 |
[Python] Mac 에서 한글로 된 파일 경로 문제없이 사용하는 방법 (0) | 2020.12.15 |
[Python] datetime을 활용하여 코드 소요시간 측정하기 (0) | 2020.12.06 |
Comments