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

如何创建兼容Pillow .save()方法的PDF页面图片数组?

问题:如何创建兼容PIL Image.save()的PDF页面图片数组?

我通过pdf2image导入PDF:

images = convert_from_path(r"D:\Jupyter\abc.pdf", output_folder=r"D:\TempPython", poppler_path = r"D:\PopplerLIB\Library\bin")

随后在主循环中逐页处理图片,将处理后的页面副本存入imagesConverted数组,但使用以下保存代码时出现报错:

images.save(pdf_path, "PDF" ,resolution=100.0, save_all=True, append_images=imagesConverted[1:])

报错信息:

'numpy.ndarray' object has no attribute 'encoderinfo'

请问如何创建可兼容.save()方法的PDF页面图片数组?


解决方案
  • 核心原因:处理后得到的是numpy.ndarray类型对象,但save()方法要求传入的是PIL Image格式对象,两者不兼容导致报错。
  • 转换步骤:
    1. 先导入必要依赖库:
      from PIL import Image
      import numpy as np
      
    2. 根据处理后的数组格式,转换为PIL Image:
      • 若数组为RGB格式(通道顺序R-G-B):
        # 假设processed_page是处理后的numpy.ndarray
        pil_img = Image.fromarray(np.uint8(processed_page))
        imagesConverted.append(pil_img)
        
      • 若数组为BGR格式(比如用OpenCV处理后的结果),需先转换通道顺序:
        import cv2
        # 转换BGR到RGB
        rgb_page = cv2.cvtColor(processed_page, cv2.COLOR_BGR2RGB)
        pil_img = Image.fromarray(np.uint8(rgb_page))
        imagesConverted.append(pil_img)
        
  • 验证:确认imagesConverted中的每个元素都是PIL Image对象,与原images列表的元素类型一致,即可正常调用save()方法。

内容的提问来源于stack exchange,提问作者Marc Tetreault

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:42:47