You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PyMuPDF将PDF转图像时提示Pixmap无writeImage属性报错

报错原因

该错误由PyMuPDF(即导入的fitz库)版本迭代后API变更导致,Pixmap对象的writeImage方法是旧版本(1.18.x及更早)的保存接口,新版本中已经被移除替换。

修复方案

直接将旧的writeImage方法调用替换为新版本对应的save方法即可,修正后的可运行代码如下:

import fitz
pdf = fitz.open('cornwall.pdf')
page = pdf.load_page(0)
pix = page.get_pixmap()
pix.save("cornwall_output.png")
适配OpenCV的优化方案

如果你的最终目的是把PDF页面转成OpenCV可处理的格式,不需要先把图片保存到本地再读取,可以直接在内存中完成格式转换,减少不必要的磁盘IO开销,参考代码:

import fitz
import cv2
import numpy as np

pdf = fitz.open('cornwall.pdf')
page = pdf.load_page(0)
pix = page.get_pixmap()
# 将pixmap原始数据转为numpy数组
img_array = np.frombuffer(pix.samples, dtype=np.uint8).reshape(pix.height, pix.width, pix.n)
# 转换为OpenCV默认使用的BGR色彩格式
if pix.n == 4:
    cv_img = cv2.cvtColor(img_array, cv2.COLOR_RGBA2BGR)
else:
    cv_img = cv2.cvtColor(img_array, cv2.COLOR_RGB2BGR)

# 后续直接对cv_img执行OpenCV相关处理即可
补充排查点
  • 如果替换方法后仍报错,先执行pip show pymupdf确认本地安装的版本,1.19.0及之后的正式版本均使用save()作为图片保存接口
  • 不要同时安装独立的fitz包和pymupdf包,二者会产生接口冲突,如果之前装过独立fitz包,先执行pip uninstall fitz卸载后重装最新版pymupdf即可。

内容的提问来源于stack exchange,提问作者Abby Jones

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 19:57:16