PythonMagick과 PIL을 이용한 PDF에서 이미지 추출

테스트 환경

  • 운영체제: Windows 7 64Bit
  • PythonVersion: 2.7

ImageMagick 설치

  1. ImageMagick 다운로드 [링크]
  2. ImageMagick 설치
  3. 중요 환경 변수 등록 (IMAGEMAGICK_HOME)

PythonMagick 설치

PIP 또는 easy_install 을 이용하여 설치 할 수 없기 때문에 수동으로 설치를 해야 하는 부분이 있습니다.

  1. PythonMagick‑0.9.10‑cp27‑none‑win32.whl 파일 다운로드 [링크] (운영체제가 64Bit여도 32Bit 파일을 다운로드)
  2. pip 를 이용하여 설치
C:UserscoozplzDownloads>pip install PythonMagick-0.9.10-cp27-none-win32.whl

테스트
파이썬 명령 프롬프트에서 import를 했을때 Module Not Found 가 표시되지 않으면 정상적으로 설치된 것입니다.

>>> import PythonMagick

GhostScript 설치

GhostScript가 없는 경우 Windows에서 실행하면 파일의 저장경로를 찾을 수 없다는 오류가 발생됩니다.

  1. GhostScript 32Bit 다운로드 [링크] (운영체제가 64Bit여도 32Bit 파일을 다운로드)
  2. GhostScript 설치
  3. 환경변수 등록 (GHOSTSCRIPT_HOME)

PIL 설치

> easy_install PIL

테스트
파이썬 명령 프롬프트에서 import를 했을때 Module Not Found 가 표시되지 않으면 정상적으로 설치된 것입니다.

>>> import Image

소스

import PythonMagick
import Image
import time

def loadPDFImage(pdfPath, outputFile):
    """
    PDF 파일을 로딩하여 이미지 파일로 저장한다.
    :param pdfPath  PDF 파일 경로
    :param outputFile   추출한 이미지 저장 경로
    """
    pdfImage = PythonMagick.Image()
    pdfImage.density("300")
    pdfImage.read(pdfPath)
    pdfImage.write(outputFile)


def splitImage(imageFileName, splittedImageSavingDir):
    """
    이미지 파일을 원하는 크기로 Split한 후 저장한다.
    :param imageFileName    원본 이미지의 경로
    :param splittedImageSavingDir   잘린 이미지를 저장할 상위 디렉토리
    """
    loadedImage = Image.open(imageFileName)
    for i in range(3):
        left = 256 + (952 * i) + (15 * i)
        right = 1212 + (952 * i) + (15 * i)
        cropImage = loadedImage.crop((left, 278, right, 1800))
        savingFileName = "%s_%d.jpg" % (time.strftime('%Y%m%d%H%M'), i)
        cropImage.save("%s/%s" % (splittedImageSavingDir, savingFileName))
        print "Successfully saved, %s" % savingFileName


if __name__ == '__main__':
    pdfPath = "D:/test.pdf"
    outputPath = "D:/test.jpg"
    splittedImageSavingDir = "D:/"
    loadPDFImage(pdfPath, outputPath)
    splitImage(outputPath, splittedImageSavingDir)

결과

원본 PDF
ORIGIN_IMAGE

잘린 이미지
SPLIT_IMAGE{max-width:320px}

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s