【问题标题】:Python WAND WandRuntimeErrorPython WAND WandRuntimeError
【发布时间】:2019-08-07 14:04:33
【问题描述】:

我有以下一段 Python 代码可以将 PDF 转换为 JPG。

with Img(filename=pdfName, resolution=300) as pic:
    pic.compression_quality = self.compressionQuality
    pic.background_color = Color("white")
    pic.alpha_channel = 'remove'
    pic.save(filename=output)

我的问题是,对于一个大的 PDF 文件(10mb)我有以下错误:

File "/home/nathan/PycharmProjects/oc_for_maarch/worker.py", line 44, in <module>
    launch(args)
  File "/home/nathan/PycharmProjects/oc_for_maarch/src/main.py", line 105, in launch
    q = process(args, path + file, Log, Separator, Config, Image, Ocr, Locale, WebService, q)
  File "/home/nathan/PycharmProjects/oc_for_maarch/src/process/OCForMaarch.py", line 48, in process
    Image.pdf_to_jpg(file + '[0]')
  File "/home/nathan/PycharmProjects/oc_for_maarch/src/classes/Images.py", line 36, in pdf_to_jpg
    self.save_img_with_wand(pdfName, self.jpgName)
  File "/home/nathan/PycharmProjects/oc_for_maarch/src/classes/Images.py", line 46, in save_img_with_wand
    with Img(filename=pdfName, resolution=300) as pic:
  File "/home/nathan/Documents/OpenCV/lib/python3.7/site-packages/wand/image.py", line 6406, in __init__
    self.read(filename=filename, resolution=resolution)
  File "/home/nathan/Documents/OpenCV/lib/python3.7/site-packages/wand/image.py", line 6799, in read
    raise WandRuntimeError(msg)
wand.exceptions.WandRuntimeError: MagickReadImage returns false, but did raise ImageMagick exception. This can occurs when a delegate is missing, or returns EXIT_SUCCESS without generating a raster.

我在网上查了一下,发现问题与ghostscript有关,但它已安装

我在使用 Python 3.7 的 Debian 10 和 Ubuntu 19.04 上遇到问题

编辑:如果我把分辨率设置为 100 而不是 300,我没有问题

【问题讨论】:

  • 试过这些建议了吗? stackoverflow.com/questions/57271287/…
  • 是的。我编辑我的帖子,因为如果我将分辨率设置为 100 而不是 300,我没有问题,所以我认为没有依赖性问题
  • 听起来您可能需要编辑 policy.xml 文件以允许更多内存或映射空间。请参阅imagemagick.org/script/resources.php 上的 policy.xml
  • 谢谢@fmw42 就是这样!将您的答案作为真实答案而不是在这里,以便我可以将其标记为正确答案;)

标签: python wand


【解决方案1】:

当您以高密度进行光栅化时,您会从 PDF 中制作一个可能非常大尺寸的图像。所以听起来你可能会用完 RAM。如果是这样,那么您需要编辑 ImageMagick policy.xml 文件以允许更多内存或映射空间。请参阅https://imagemagick.org/script/resources.php 上的 policy.xml。它控制您可以使用命令行命令查看的资源:

convert -list resource

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 2021-07-12
    • 2016-04-20
    • 2023-03-13
    • 1970-01-01
    相关资源
    最近更新 更多