【发布时间】:2017-11-28 17:39:19
【问题描述】:
我正在尝试使用 imagemagick 将一些 PDF 转换为 jpeg。我正在使用 python 3.62 - 64 位和 wand 0.4.4 开发 win 10、64。我已经能够使用 ImageMagick-6.9.9-Q16-HDRI 使用魔杖了。我已将 Path 和 MAGICK_HOME 环境变量设置为
E:\ImageMagick-6.9.9-Q16-HDR
这允许:
from wand.image import Image
上班。
我的脚本:
import os
magick_home=os.getcwd() + os.sep + "E:\ImageMagick-6.9.9-Q16-HDR"
os.environ["PATH"] += os.pathsep + magick_home + os.sep
os.environ["MAGICK_HOME"] = magick_home
os.environ["MAGICK_CODER_MODULE_PATH"] = magick_home + os.sep + "modules" + os.sep + "coders"
from wand.image import Image
.....
file_path = os.path.dirname(os.path.abspath(__file__))+os.sep+"myfile.pdf"
image_pdf = Image(filename=file_path, resolution=300)
image_jpeg = image_pdf.convert('jpeg')
我明白了:
File "ocr_test.py", line 38, in <module>
image_pdf = Image(filename=file_path, resolution=300)
File "e:\Myenv\lib\site-packages\wand\image.py", line 2744, in __init__
self.read(filename=filename, resolution=resolution)
File "e:\Myenv\lib\site-packages\wand\image.py", line 2822, in read
self.raise_exception()
File "e:\Myenv\lib\site-packages\wand\resource.py", line 222, in raise_exception
raise e
wand.exceptions.MissingDelegateError: no decode delegate for this image format `PDF' @ error/constitute.c/ReadImage/504
我怎样才能让它工作?
编辑:
听从您的建议,我按照 https://glenbambrick.com/2017/01/10/pdf-to-jpg-conversion-with-python-for-windows/ 安装了 ghostscript 9.22 - 32 位。 (我知道 64 位无法工作 PythonMagick can't find my pdf files) 我已将 Path 和 MAGICK_HOME 环境变量设置为包含:
E:\ImageMagick-6.9.9-Q16-HDR;E:\gs9.22\bin
我跑了:
$ E:/ImageMagick-6.9.9-Q16-HDRI/convert --version
Version: ImageMagick 6.9.9-23 Q16 x64 2017-11-12 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2015 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Visual C++: 180040629
Features: Cipher DPC HDRI Modules OpenMP
Delegates (built-in): bzlib cairo flif freetype jng jp2 jpeg lcms lqr openexr pangocairo png ps raw rsvg tiff webp xml zlib
我没有看到 gs 或 gslib。接下来我该怎么做?
【问题讨论】:
-
Imagemagick 需要 Ghostscript 作为代理库来读取 PDF 文件。确保你在 ImageMagick 可以找到的地方安装了 Ghostscript。通常,您可以通过
convert -version判断您是否这样做,并且您应该看到 gs 或 gslib 被列为代表。 -
请看我的编辑
-
gs 或 gslib 未在您的代表中列出。这可能意味着 ImageMagick 找不到 Ghostscript。要确保它不存在,请尝试
convert -list configure并查看它是否在以 DELEGATES 开头的行上列出了 gs 或 gslib。如果不是,那么您安装的 Ghostscript 或 ImageMagick 可能不正确?我会重新开始,在安装时检查以查看在安装 Ghostscript 或 ImageMagick 时没有列出任何错误。您可以检查 config.log 文件。
标签: python imagemagick