回形针错误:“此图像格式没有解码代理”

时间:2010-08-01 14:53:58

标签: ruby-on-rails imagemagick paperclip

我使用Windows 7并安装了ImageMagic。我可以在没有问题的情况下从控制台运行Identify命令。

但是当我使用我的Rails应用程序(从Aptana RadRails IDE运行)时,它给了我一个错误:

Magick: no decode delegate for this image format `/Users/karl/AppData/Local/Temp/stream,5000,1.jpg[0]'' @ error/constitute.c/ReadImage/532.
Magick: no decode delegate for this image format `/Users/karl/AppData/Local/Temp/stream,5000,1.jpg[0]'' @ error/constitute.c/ReadImage/532.


[paperclip] c:/ImageMagick-6.6.3-Q16/identify -format %wx%h  'C:/Users/karl/AppData/Local/Temp/stream,5000,1.jpg[0]'
[paperclip] An error was received while processing: #<Paperclip::NotIdentifiedByImageMagickError::/Users/karl/AppData/Local/Temp/stream,5000,1.jpg is not recognized by the 'identify' command.>
[paperclip] c:/ImageMagick-6.6.3-Q16/identify -format %wx%h  'C:/Users/karl/AppData/Local/Temp/stream,5000,1.jpg[0]'
[paperclip] An error was received while processing: #<Paperclip::NotIdentifiedByImageMagickError: C:/Users/karl/AppData/Local/Temp/stream,5000,1.jpg is not recognized by the 'identify' command.>

如果我尝试从控制台运行相同的命令,它可以正常工作(在任何用户下)。 (注意:我没有添加引号)

C:\Users\karl>c:/ImageMagick-6.6.3-Q16/identify -format %wx%h C:/Users/karl/AppData/Local/Temp/stream,5000,1.jpg[0]
600x450

有趣的是,如果我用引号(')手动运行命令,那么我会得到同样的错误。

C:\Users\karl>c:/ImageMagick-6.6.3-Q16/identify -format %wx%h 'C:/Users/karl/AppData/Local/Temp/stream,5000,1.jpg[0]'
Magick: no decode delegate for this image format `/Users/karl/AppData/Local/Temp/stream,5000,1.jpg[0]'' @ error/constitute.c/ReadImage/532.

我试图修改Paperclip,以便它不会添加引号,但它似乎没有任何区别,或者我只是做错了。

3 个答案:

答案 0 :(得分:1)

在Linux上安装时遇到了同样的问题。首先,如果您使用的是客户端库(例如,MagickWand for php),那么您需要确保先安装图像库,然后再安装imagemagick,然后安装扩展程序。

虽然我不确定Windows的等效内容,但我始终确保libjpeg-devellibpng-devel

为了检查您拥有的代表,您可以运行convert -list form,这将打印ImageMagick知道如何使用的格式列表。

答案 1 :(得分:1)

如果在使用TTF字体和ImageMagick时出现此错误,则还需要在运行./configure之前安装freetype-devel。另外,请确保在安装后通过http://imagemagick.org的源链接安装“make check”。

答案 2 :(得分:0)

尝试在 lib / paperclib.rb 文件中找到 109 行:

params = quote_command_options(*params).join(" ")

并将其替换为:

params = params.join(" ")