반응형
Python을 사용하여 PDF에서 고해상도 이미지 추출
아래 코드로 여러 PDF 페이지에서 이미지를 추출할 수 있었지만 해상도가 상당히 낮습니다. 그것을 조정할 방법이 있나요?
import fitz
pdffile = "C:\\Users\\me\\Desktop\\myfile.pdf"
doc = fitz.open(pdffile)
for page_index in range(doc.pageCount):
page = doc.loadPage(page_index)
pix = page.getPixmap()
output = "image_page_" + str(page_index) + ".jpg"
pix.writePNG(output)
나는 또한 코드를 사용하려고 시도했고 if pix.n < 5"를 "if pix.n - pix.alpha < 4"로 업데이트했지만 내 경우에는 이것이 어떤 이미지도 출력하지 않았다.
PyMuPDF의 이번 호에서 언급한 바와 같이, 당신은 매트릭스를 사용해야 한다: .
예는 다음과 같습니다:
zoom = 2 # zoom factor
mat = fitz.Matrix(zoom, zoom)
pix = page.getPixmap(matrix = mat, <...>)
또한 이 문제에 표시된 것은 매트릭스를 사용하지 않을 경우 기본 해상도가 72dpi로 낮은 해상도를 얻을 수 있다는 것입니다.
의 설명서는 행렬을 만드는 것보다 훨씬 더 간단하며, 고해상도를 위해 인수를 사용할 수 있음을 보여줍니다:
pix = page.getPixmap(dpi=200)
이것은 v1.19.2의 새로운 기능입니다.
최상의 품질을 얻으려면 'matrix'와 'dpi'를 사용하십시오. 이 코드는 결과의 고해상도 문제를 해결한다. 폴더의 모든 파일을 최상의 품질로 변환하는 솔루션을 구현합니다:
# pip install fitz
# pip install pip install PyMuPDF==1.19.0
import fitz
import glob
for filename in glob.glob("*.pdf"):
pdffile = filename
doc = fitz.open(pdffile)
for page_index in range(doc.pageCount):
try:
page = doc.load_page(page_index)
zoom = 2
mat = fitz.Matrix(zoom, zoom)
pix = page.get_pixmap(matrix = mat,dpi=1200)
output = '_' + filename.replace(".pdf","") + "-" + str(page_index) + ".png"
pix.save(output)
except Exception as e:
print(str(filename) + ' > ' + str(e))
doc.close()
반응형
'개발하자' 카테고리의 다른 글
축소자와 유형 스크립트 결합에서 "유형 인수를 'ReduersMapObject' 유형의 매개 변수에 할당할 수 없습니다." 오류를 반환합니다 (0) | 2023.06.26 |
---|---|
HTTPS 포트를 열려면 Kubernetes 인스턴스 템플릿 변경 (0) | 2023.06.25 |
gitlab에서 kubernetes 배포 상태 가져오기 (0) | 2023.06.24 |
쿠베르네테스: kubectl 구성에서 클러스터와 컨텍스트를 삭제하려면 어떻게 해야 합니까? (0) | 2023.06.23 |
Python이 중복 출력을 제공하지 않도록 방지 (0) | 2023.06.23 |