如何在 Python 中從 PDF 中提取圖像而無需重新採樣?
以原始解析度和格式從 PDF 文件中擷取影像,無需重新取樣重新取樣,您可以使用 PyMuPDF 模組。這個 Python 模組可讓您有效率地處理 PDF 文件並操作其內容。以下是如何使用 PyMuPDF 提取圖像:
<code class="python">import fitz doc = fitz.open("input.pdf") for page_num in range(len(doc)): for img in doc.getPageImageList(page_num): xref = img[0] pix = fitz.Pixmap(doc, xref) if pix.n < 5: # Check if it's grayscale or RGB pix.writePNG(f"page_{page_num}_img_{xref}.png") else: # Convert CMYK to RGB before saving pix1 = fitz.Pixmap(fitz.csRGB, pix) pix1.writePNG(f"page_{page_num}_img_{xref}.png")</code>
在此程式碼中,我們迭代 PDF 中的頁面和圖像。 “xref”變數表示圖像的唯一識別碼。根據影像的色彩空間(RGB 或 CMYK),我們可以直接寫入 PNG 影像,也可以在儲存之前將 CMYK 轉換為 RGB。
或者,如果您使用的是fitz 版本1.19.6,則可以使用以下程式碼執行提取,並帶有進度條以獲得更好的可視性:
<code class="python">import os import fitz from tqdm import tqdm workdir = "path_to_pdf_folder" for each_path in os.listdir(workdir): if ".pdf" in each_path: doc = fitz.Document(os.path.join(workdir, each_path)) for i in tqdm(range(len(doc)), desc="pages"): for img in tqdm(doc.get_page_images(i), desc="page_images"): xref = img[0] image = doc.extract_image(xref) pix = fitz.Pixmap(doc, xref) pix.save(os.path.join(workdir, f"{each_path[:-4]}_p{i}-{xref}.png"))</code>
這些程式碼片段將使您能夠從PDF 中提取圖像,並保留其原始解析度和格式。
以上是如何使用 Python 從 PDF 提取高解析度圖像而無需重新採樣?的詳細內容。更多資訊請關注PHP中文網其他相關文章!