当前位置:   article > 正文

通过Python的fitz库提取pdf中的图片_fitz.open

fitz.open

使用Python的fitz库提取PDF中的图片时,需要遵循以下步骤:

  1. 安装fitz库:使用pip命令安装fitz库,命令为pip install pymupdf

  2. 打开PDF文件:使用fitz库的open函数打开PDF文件,命令为doc = fitz.open(pdf_file_path),其中pdf_file_path是PDF文件的路径。

  3. 获取页面:使用doc的getPage函数获取页面,命令为page = doc.loadPage(page_num),其中page_num是要获取的页面的页码。

  4. 获取页面中的图像:使用page的getImageList函数获取页面中的所有图像,命令为image_list = page.getImageList()

  5. 保存图像:使用fitz库的Image函数保存图像,命令为image = fitz.Image(fitz.MemoryFile(page.getPixmap().getImageData())),然后可以使用image的save函数保存图像,命令为image.save(image_file_path),其中image_file_path是要保存的图像文件的路径。

完整代码如下所示:

import fitz

def extract_images(pdf_file_path):
    doc = fitz.open(pdf_file_path)

    for i in range(doc.page_count):
        page = doc.loadPage(i)
        image_list = page.getImageList()

        for image_index, img in enumerate(page.getImageList(), start=1):
            xref = img[0]
            pix = fitz.Pixmap(doc, xref)

            if pix.n >= 5:       # CMYK: convert to RGB first
                pix = fitz.Pixmap(fitz.csRGB, pix)
            image_path = f"{pdf_file_path}_page{i+1}_image{image_index}.png"
            pix.writePNG(image_path)
            pix = None

    doc.close()

pdf_file_path = "example.pdf"
extract_images(pdf_file_path)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

上述代码将提取PDF中的所有图像,并以PNG格式保存。其中,image_list是一个由元组组成的列表,每个元组表示一个图像信息,包括图像的XRef对象、图像的左下角和右上角坐标等信息。通过元组的第一个元素,可以获取图像的XRef对象,然后使用fitz库的Pixmap类获取图像的像素矩阵,并保存为PNG格式的图像文件。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号