Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Anda Boleh Mengekstrak Imej daripada PDF Menggunakan Python Sambil Mengekalkan Resolusi Asalnya?

Bagaimanakah Anda Boleh Mengekstrak Imej daripada PDF Menggunakan Python Sambil Mengekalkan Resolusi Asalnya?

DDD
DDDasal
2024-10-22 07:52:30574semak imbas

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

Mengekstrak Imej daripada PDF tanpa Pensampelan Semula Menggunakan Python

Untuk mengekstrak semua imej daripada dokumen PDF dengan cekap sambil mengekalkan resolusi dan format aslinya tanpa pensampelan semula , anda boleh menggunakan modul PyMuPDF. Modul ini menyediakan penyelesaian yang berkesan untuk pengekstrakan imej, mengeluarkan imej sebagai fail PNG.

Menggunakan 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>

Penambahan:

Untuk versi skrip yang dikemas kini yang menyokong 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>

Skrip dipertingkat ini menyediakan bar kemajuan untuk keterlihatan tambahan dan menyimpan imej yang diekstrak dengan konvensyen penamaan fail yang konsisten.

Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Mengekstrak Imej daripada PDF Menggunakan Python Sambil Mengekalkan Resolusi Asalnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn