Python を使用して元の解像度を維持しながら PDF から画像を抽出するにはどうすればよいですか?

DDD
リリース: 2024-10-22 07:52:30
オリジナル
582 人が閲覧しました

How Can You Extract Images from PDFs Using Python While Preserving Their Original Resolution?

Python を使用してリサンプリングせずに PDF から画像を抽出

リサンプリングせずにネイティブの解像度と形式を維持しながら PDF ドキュメントからすべての画像を効率的に抽出するにはでは、PyMuPDF モジュールを利用できます。このモジュールは、画像を PNG ファイルとして出力する、画像抽出のための効果的なソリューションを提供します。

PyMuPDF の使用:

<code class="python">import fitz

# Open the PDF document
doc = fitz.open("file.pdf")

# Iterate through the pages
for i in range(len(doc)):
    # Extract images from the current page
    for img in doc.getPageImageList(i):
        # Retrieve the image's XREF and create a Pixmap
        xref = img[0]
        pix = fitz.Pixmap(doc, xref)

        # Check if the image is grayscale or RGB
        if pix.n < 5:
            # Save the image in PNG format
            pix.writePNG("p%s-%s.png" % (i, xref))

        # If the image is CMYK, convert it to RGB and save
        else:
            pix1 = fitz.Pixmap(fitz.csRGB, pix)
            pix1.writePNG("p%s-%s.png" % (i, xref))
            pix1 = None

        # Release the Pixmaps
        pix = None</code>
ログイン後にコピー

機能強化:

fitz 1.19.6 をサポートするスクリプトの更新バージョンの場合:

<code class="python">import os
import fitz
from tqdm import tqdm

# Specify the work directory
workdir = "your_folder"

# Iterate through the PDFs in the directory
for each_path in os.listdir(workdir):
    if ".pdf" in each_path:
        # Open the PDF document
        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"):
                # Extract the image and save as PNG
                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>
ログイン後にコピー

この強化されたスクリプトは、可視性を高めるための進行状況バーを提供し、一貫したファイル命名規則で抽出された画像を保存します。

以上がPython を使用して元の解像度を維持しながら PDF から画像を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!