使用PyMuPdf提取图片,有时候会执行下步操作不想保存为图片,获取到的数据流直接转为numpy.array,方便图像处理。
import fitz
import cv2
import numpy as np
doc = fitz.open(path)
try:
# 测试只取第一页图片
page = doc[0]
# 缩放及旋转
zoom = 100
rotate = 0
trans = fitz.Matrix(zoom / 150.0, zoom / 150.0).preRotate(rotate)
pm = page.getPixmap(matrix=trans, alpha=False)
# 这里获取到数据流,看了下源码,下面可以直接用getPNGdata()
getpngdata = pm.getImageData(output="png")
# 解码为 np.uint8
image_array = np.frombuffer(getpngdata, dtype=np.uint8)
img_cv = cv2.imdecode(image_array, cv2.IMREAD_ANYCOLOR)
# 保存为图片测试看看
cv2.imwrite('test\\m1.png', img_cv)
except Exception as e:
print(e)
doc.close()