如何使用 Python 从 PDF 中提取高分辨率图像而不改变尺寸?

Susan Sarandon
发布: 2024-10-22 07:53:30
原创
645 人浏览过

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

在 Python 中从 PDF 中提取本机分辨率图像而无需重新采样

从 PDF 中以其本机分辨率和格式提取图像,同时保留布局可以是一个挑战。然而,Python 的 PyMuPDF 模块提供了一个简单的解决方案。

使用 PyMuPDF

PyMuPDF 可以将图像输出为 PNG 文件,确保高分辨率并保持原始格式(例如 TIFF) ,JPEG)。下面的代码演示了它的用法:

<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>
登录后复制

Fitz 1.19.6的修改版本

对于最新版本的fitz(1.19.6),修改如下可以使用代码:

<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>
登录后复制

此修改代码利用tqdm进行进度条显示,并优化图像提取和保存过程。

以上是如何使用 Python 从 PDF 中提取高分辨率图像而不改变尺寸?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!