Heim >Backend-Entwicklung >Python-Tutorial >Wie extrahiere ich mit Python hochauflösende Bilder aus PDFs, ohne die Abmessungen zu ändern?
Extrahieren von Bildern mit nativer Auflösung aus PDFs in Python ohne Resampling
Das Extrahieren von Bildern aus PDFs mit ihrer nativen Auflösung und ihrem nativen Format unter Beibehaltung des Layouts ist möglich eine Herausforderung. Das PyMuPDF-Modul von Python bietet jedoch eine unkomplizierte Lösung.
Verwendung von PyMuPDF
PyMuPDF kann Bilder als PNG-Dateien ausgeben, wodurch eine hohe Auflösung gewährleistet und das Originalformat (z. B. TIFF) beibehalten wird , JPEG). Der folgende Code demonstriert seine Verwendung:
<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>
Geänderte Version für Fitz 1.19.6
Für die neueste Version von Fitz (1.19.6) wurde Folgendes geändert Code kann verwendet werden:
<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>
Dieser modifizierte Code nutzt tqdm für die Anzeige des Fortschrittsbalkens und optimiert den Prozess der Bildextraktion und -speicherung.
Das obige ist der detaillierte Inhalt vonWie extrahiere ich mit Python hochauflösende Bilder aus PDFs, ohne die Abmessungen zu ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!