Heim >Backend-Entwicklung >Python-Tutorial >Wie können Sie mit Python Bilder aus PDFs extrahieren und dabei ihre ursprüngliche Auflösung beibehalten?

Wie können Sie mit Python Bilder aus PDFs extrahieren und dabei ihre ursprüngliche Auflösung beibehalten?

DDD
DDDOriginal
2024-10-22 07:52:30690Durchsuche

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

Bilder aus PDFs ohne Resampling mit Python extrahieren

Zum effizienten Extrahieren aller Bilder aus einem PDF-Dokument unter Beibehaltung ihrer nativen Auflösung und ihres nativen Formats ohne Resampling können Sie das PyMuPDF-Modul verwenden. Dieses Modul bietet eine effektive Lösung für die Bildextraktion und gibt Bilder als PNG-Dateien aus.

Verwendung von 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>

Verbesserungen:

Für eine aktualisierte Version des Skripts, die fitz 1.19.6 unterstützt:

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

Dieses erweiterte Skript bietet Fortschrittsbalken für mehr Sichtbarkeit und speichert die extrahierten Bilder mit einheitlichen Dateinamenskonventionen.

Das obige ist der detaillierte Inhalt vonWie können Sie mit Python Bilder aus PDFs extrahieren und dabei ihre ursprüngliche Auflösung beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn