Ruby on rails RMagick/ImageMagick错误“此图像格式没有解码委托”与Ruby Tempfile

Ruby on rails RMagick/ImageMagick错误“此图像格式没有解码委托”与Ruby Tempfile,ruby-on-rails,ruby,imagemagick,rmagick,Ruby On Rails,Ruby,Imagemagick,Rmagick,我在使用RMagick/ImageMagick打开通过Rails表单上传的文件时遇到问题。我相信这是因为Rails临时文件行为是为了消除文件扩展名。据我所知,ImageMagick应该更喜欢使用幻数而不是文件扩展名来检测图像文件格式,但在我的安装中似乎不是这样。我正在这样做: img = Magick::Image.read(full_size_image.path) 其中full_size_image是从upload form controller返回的Tempfile对象,它会创建如下错误

我在使用RMagick/ImageMagick打开通过Rails表单上传的文件时遇到问题。我相信这是因为Rails临时文件行为是为了消除文件扩展名。据我所知,ImageMagick应该更喜欢使用幻数而不是文件扩展名来检测图像文件格式,但在我的安装中似乎不是这样。我正在这样做:

img = Magick::Image.read(full_size_image.path)
其中full_size_image是从upload form controller返回的Tempfile对象,它会创建如下错误:

此图像格式“/var/folders/uI/uisldaxhkixkwyfutws4+++TI/-Tmp-/RackMultipart20101031-10144-1hiwlw-0”没有解码委托@error/compose.c/ReadImage/532

这在Mac OS X 10.6上发生,Rails 2.3.8、RMagick 2.13.1和ImageMagick 6.6.5-5。我已经确认ImageMagick可以通过上传表单成功地转换我用来测试的文件,并且tempfile路径/文件确实存在/可读

我怀疑ImageMagick安装中的某个东西以某种方式阻止它使用magic number检测文件类型??-让ImageMagick从源代码处处理雪豹本身就是一次冒险,或者b在某些情况下,这不起作用,我需要让Tempfile保留原始文件扩展名

我知道我可以从Tempfile对象获取原始文件名,但我还没有找到重命名该文件的方法。我想我可以在使用File对象的地方做一些模糊处理,然后以某种方式创建一个Tempfile的副本,上面有原始扩展名,但这似乎不合适。解决这个问题的正确方法是什么


谢谢您的帮助。

我解决了问题-DYLD_LIBRARY_PATH环境变量在我测试命令行版本convert的shell中设置正确,但在运行Mongrel服务器的shell中设置不正确。我修好后,它开始工作了

我解决了问题-DYLD_LIBRARY_PATH环境变量在我测试convert命令行版本的shell中设置正确,但在运行Mongrel服务器的shell中设置不正确。我修好后,它开始工作了

DYLD_LIBRARY_PATH应该设置为…?它将根据您安装ImageMagick的方式而有所不同,但一般来说,DYLD_LIBRARY_PATH需要包括编译后的ImageMagick安装中的lib/目录。如果您使用自制软件进行安装比尝试自己从源代码构建要容易得多,则它们可能位于/usr/local/cillar/imagemagick//liband DYLD_LIBRARY_路径应设置为…?它将根据您安装imagemagick的方式而有所不同,但一般来说,DYLD_LIBRARY_PATH需要包含编译后的ImageMagick安装中的lib/目录。如果您使用自制软件进行安装比尝试自己从源代码构建要容易得多,那么它们可能位于/usr/local/ceral/imagemagick//lib中