使用fitz (PyMuPDF模块),使用以下代码提取所有图像,以及小图标。我必须避免提取这些图标,只获取图像。
import fitz
file = fitz.open("example.pdf")
pdf = fitz.open(file)
page = len(file)
for pic in range(page):
image_list = pdf.getPageImageList(pic)
j = 1
for image in image_list:
xref = image[0]
pix = fitz.Pixmap(pdf, xref)
#print(len(pix)+ 88)
if pix.n < 5:
pix.writePNG(f'{pic}_{j}.png')
else:
pix1 = fitz.open(fitz.csRGB, pix)
pix1.writePNG(f'{xref}_{pic}.png')
pix1 = None
pix = None
j = j + 1
print(f'Total images on page {pic} are {len(image_list)}')发布于 2021-06-10 13:39:32
get_page_images()返回页面(直接或间接)引用的所有图像的列表。
>>> doc = fitz.open("pymupdf.pdf")
>>> imglist = doc.getPageImageList(0)
>>> for img in imglist: print img
((241, 0, 1043, 457, 8, 'DeviceRGB', '', 'Im1'))在上面的示例中,doc.getPageImageList(0)返回页面上显示的图像列表。每个条目看起来都像[xref, smask, width, height, bpc, colorspace, alt. colorspace, name]
因此,在上面的示例中,值1043和457对应于图像的宽度和高度。您可以提供一个if condition来消除小尺寸的图像/图标。
有关更多信息,请访问this doc link。
https://stackoverflow.com/questions/67915260
复制相似问题