リサンプリングせずに Python で PDF からネイティブ解像度の画像を抽出する
レイアウトを維持しながらネイティブ解像度と形式で PDF から画像を抽出することは可能です。挑戦です。ただし、Python の PyMuPDF モジュールは簡単な解決策を提供します。
PyMuPDF の使用
PyMuPDF は、高解像度を確保し、元の形式 (TIFF など) を維持して画像を PNG ファイルとして出力できます。 、JPEG)。次のコードはその使用法を示しています。
<code class="python">import fitz doc = fitz.open("file.pdf") for i in range(len(doc)): for img in doc.getPageImageList(i): xref = img[0] pix = fitz.Pixmap(doc, xref) if pix.n < 5: # GRAY or RGB pix.writePNG("p%s-%s.png" % (i, xref)) else: # CMYK pix1 = fitz.Pixmap(fitz.csRGB, pix) pix1.writePNG("p%s-%s.png" % (i, xref)) pix1 = None pix = None</code>
fitz 1.19.6 の修正バージョン
fitz の最新バージョン (1.19.6) では、次の変更が加えられています。次のコードを使用できます:
<code class="python">import os import fitz from tqdm import tqdm workdir = "your_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, "%s_p%s-%s.png" % (each_path[:-4], i, xref)))</code>
この変更されたコードは、進行状況バーの表示に tqdm を利用し、画像の抽出と保存のプロセスを最適化します。
以上がPython を使用して寸法を変更せずに PDF から高解像度の画像を抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。