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

img = Magick::Image.read(full_size_image.path)

其中,full_size_image是从上载表单控制器返回的tempfile对象,它会创建如下错误:
没有此图像格式的解码委托`/var/folders/uI/uIsldaxoHkiXKWYFuTWs4+++TI/-Tmp-/RackMultipart20101031-10144-1hiwlw-0'@error/composite.c/ReadImage/532
这发生在MacOSX10.6上,Rails2.3.8、RMagick2.13.1和ImageMagick6.6.5-5。我已经确认IVEMAGEKE可以转换我所用的文件来成功地通过上传表单进行测试,并且TestFrasPAT/文件实际上是存在的/是可读的。
我怀疑我的ImageMagick安装中的某个东西以某种方式阻止了它使用magic number来检测文件类型(?)??-让ImageMagick从源代码处处理雪豹本身就是一次冒险)或者b)只是有些情况下这不起作用,我需要以某种方式使tempfile保留原始文件扩展名。
我知道可以从Tempfile对象中获取原始文件名,但我还没有找到重命名该文件的方法我想我可以在使用File对象的地方创建一些kludge,并以某种方式创建一个Tempfile的副本,上面有原始的扩展名,但这看起来不太合适解决这个问题的正确方法是什么?
谢谢你的帮助。

最佳答案

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

关于ruby-on-rails - Ruby Tempfile导致RMagick/ImageMagick错误“此图像格式没有解码委托(delegate)”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4065944/

10-13 04:46