Heim > Backend-Entwicklung > Python-Tutorial > Wie extrahiere ich hochauflösende Bilder aus PDFs ohne Resampling mit Python?

Wie extrahiere ich hochauflösende Bilder aus PDFs ohne Resampling mit Python?

Mary-Kate Olsen
Freigeben: 2024-10-22 07:52:02
Original
830 Leute haben es durchsucht

How to Extract High-Resolution Images from PDFs Without Resampling Using Python?

Wie extrahiere ich Bilder aus PDFs ohne Resampling in Python?

So extrahieren Sie Bilder aus einem PDF-Dokument mit ihrer ursprünglichen Auflösung und ihrem ursprünglichen Format, ohne Für das Resampling können Sie das PyMuPDF-Modul verwenden. Mit diesem Python-Modul können Sie PDF-Dateien effizient verarbeiten und deren Inhalt bearbeiten. So können Sie PyMuPDF zum Extrahieren von Bildern verwenden:

<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>
Nach dem Login kopieren

In diesem Code durchlaufen wir die Seiten und Bilder im PDF. Die Variable „xref“ stellt die eindeutige Kennung des Bildes dar. Abhängig vom Farbraum des Bildes (RGB oder CMYK) schreiben wir das PNG-Bild entweder direkt oder konvertieren CMYK in RGB, bevor wir es speichern.

Alternativ können Sie, wenn Sie fitz Version 1.19.6 verwenden, verwenden Verwenden Sie den folgenden Code, um die Extraktion mit einem Fortschrittsbalken zur besseren Sichtbarkeit durchzuführen:

<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>
Nach dem Login kopieren

Mit diesen Codeausschnitten können Sie Bilder aus einer PDF-Datei extrahieren und dabei ihre ursprüngliche Auflösung und ihr ursprüngliches Format beibehalten.

Das obige ist der detaillierte Inhalt vonWie extrahiere ich hochauflösende Bilder aus PDFs ohne Resampling mit Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage