我有一个问题,使用RMagick/ImageMagick打开通过Rails窗体上传的文件。我相信这是由于Rails Tempfile行为是为了消除文件扩展名。从我读过的内容来看,ImageMagick应该更喜欢使用幻数而不是文件扩展名来检测图像文件格式,但在我的安装中似乎不是这种情况。我这样做:RMagick/ImageMagick错误“无法解码此图像格式的代理”与Ruby Tempfile
img = Magick::Image.read(full_size_image.path)
其中full_size_image是将它视为对象从上传表单控制器,它创建了一个错误,如返回:
这种图像格式没有解码代表`在/ var /文件夹/ UI/uIsldaxoHkiXKWYFuTWs4 ++++ TI/-Tmp-/RackMultipart20101031-10144-1hiwlw-0' @错误/ constitute.c/ReadImage/532
这是在Mac OS X 10.6发生使用Rails 2.3。 8,RMagick 2.13.1和ImageMagick 6.6.5-5。我已确认ImageMagick可以将我用来通过上传表单成功测试的文件进行转换,并且tempfile文件路径/文件实际存在/可读。
我怀疑或者a)我的ImageMagick安装中的某些东西以某种方式阻止它使用幻数检测文件类型(?? - 从源代码获取ImageMagick在Snow Leopard上工作本身就是一次冒险)或者b)只是在这不起作用的情况下,我不知何故需要使Tempfile保留原始文件扩展名。
我知道我可以从Tempfile对象中获取原始文件名,但是我还没有找到重命名该文件的方法。我想我可以在使用File对象的地方创建一些kludge,并以某种方式创建Tempfile的副本,并在其上添加原始扩展名,但这看起来不太合适。什么是解决这个问题的正确方法?
感谢您的帮助。
和DYLD_LIBRARY_PATH应该设置为...? – umassthrower 2012-10-30 19:56:41
它会根据您安装ImageMagick的方式而有所不同,但一般来说DYLD_LIBRARY_PATH需要包含来自编译ImageMagick安装的lib /目录。如果你安装了自制软件(比自己从源代码构建起来容易得多),它们可能位于/ usr/local/Cellar/imagemagick//lib –
2012-11-12 05:14:25