Maison  >  Article  >  développement back-end  >  Comment extraire des images haute résolution à partir de PDF à l'aide de Python sans modifier les dimensions ?

Comment extraire des images haute résolution à partir de PDF à l'aide de Python sans modifier les dimensions ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-22 07:53:30635parcourir

How to Extract High-Resolution Images from PDFs Using Python without Altering Dimensions?

Extraire des images en résolution native à partir de PDF en Python sans rééchantillonnage

Extraire des images à partir de PDF avec leur résolution et format natifs tout en préservant la mise en page peut être un défi. Cependant, le module PyMuPDF de Python fournit une solution simple.

Utilisation de PyMuPDF

PyMuPDF peut générer des images sous forme de fichiers PNG, garantissant une haute résolution et conservant le format d'origine (par exemple, TIFF ,JPEG). Le code suivant démontre son utilisation :

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

Version modifiée pour fitz 1.19.6

Pour la dernière version de fitz (1.19.6), le code modifié suivant le code peut être utilisé :

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

Ce code modifié utilise tqdm pour l'affichage de la barre de progression et optimise le processus d'extraction et d'enregistrement des images.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn