论坛首页 编程语言技术论坛

[已经完美解决]paperclip+ImageMagicK在windows平台产生的not recognized错误

浏览 18329 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-07-28   最后修改:2010-08-10
latest update on Aug, 10, 2010 经过多次与插件作者沟通,现在paperclip已经可以和imagemagick在windows下完美运行。
请到http://github.com/thoughtbot/paperclip获取最新版本即可。
经过这次的遭遇,最深的感触就是,目前国内很多网友在遇到问题的时候不求甚解,根本不去自己实践,而是从网上转抄别人的文章,人云亦云,实际上根本不知道问题该怎么解决。虽然我这么说,打击面有点大,但是事实就是这样。
虽然这次问题的解决,基本上是由插件作者进行修改完成的,但是我不断对插件进行测试,也获益良多。
另外一个感触是,在windows下面进行ror开发,真的需要有一根超乎常人的坚强神经。
在windows平台下,使用ImageMagicK处理paperclip上传的图片时出现这个错误,google网上的解释是需要指定ImageMagicK的安装路径,但是按照网上的方法操作之后问题依然存在,感觉很多人都是盲目抄的别人的文章,没有真正实践过。
有没有哪位朋友确实搞定了windows平台下的这个错误?望不吝赐教,感激之至!

附具体情况,包括错误信息及我已经采用的处理等:
1、development.log
[paperclip] C:/Program Files/ImageMagick-6.6.3-Q16/identify '-format' '%wx%h' 'C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/stream,3592,0.jpg[0]'
[paperclip] An error was received while processing: #<Paperclip::NotIdentifiedByImageMagickError: C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/stream,3592,0.jpg is not recognized by the 'identify' command.>

2、处理方法
在config/environments/development.rb中,或者在config/initializers/paperclip.rb中,加入Paperclip.options[:command_path] = "C:/Program Files/ImageMagick-6.6.3-Q16"
重启server

3、如果把model里面:style => {...}拿掉之后,图片即可正确上传,这也说明问题出在paperclip调用ImageMagicK

4、补充说明,ImageMagicK已验证过,已经正确安装;另外不要告诉我linux下没这个问题,因为我现在只能用windows。

谢谢!

   发表时间:2010-07-28   最后修改:2010-07-28
问题补充说明:
1、如果paperclip.rb的内容只有Paperclip.options[:command_path] = "C:/Program Files/ImageMagick-6.6.3-Q16"

那么radrails的console就没有任何输出,只能从development.log里面找到错误信息

2、如果paperclip.rb按照google来的方法写
Paperclip.options[:command_path] = "C:/Program Files/ImageMagick-6.6.3-Q16"
Paperclip.options[:swallow_stderr] = false
def run cmd, params = "", expected_outcodes = 0
  command = %Q<#{%Q[#{path_for_command(cmd)} #{params}].gsub(/\s+/, " ")}>
  command = "#{command} 2>#{bit_bucket}" if Paperclip.options[:swallow_stderr]
  output = `#{command}`
  unless [expected_outcodes].flatten.include?($?.exitstatus)
    raise PaperclipCommandLineError, "Error while running #{cmd}"
  end
  output
end

那么radrails的console输出如下
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment...
** Rails loaded.
** Loading any Rails specific GemPlugins
** Signals ready.  INT => stop (no restart).
** Mongrel 1.1.2 available at 0.0.0.0:3000
** Use CTRL-C to stop.
Magick: unable to open image `'-format'': No such file or directory @ error/blob.c/OpenBlob/2514.
Magick: no decode delegate for this image format `'-format'' @ error/constitute.c/ReadImage/532.
Magick: unable to open image `'%wx%h'': No such file or directory @ error/blob.c/OpenBlob/2514.
Magick: no decode delegate for this image format `'%wx%h'' @ error/constitute.c/ReadImage/532.
Magick: no decode delegate for this image format `/DOCUME~1/ADMINI~1/LOCALS~1/Temp/stream,2332,0.jpg[0]'' @ error/constitute.c/ReadImage/532.


0 请登录后投票
   发表时间:2010-07-28  
你不用插P不就行了。   出来看上帝
0 请登录后投票
   发表时间:2010-07-28  
你配置下环境变量试试~
0 请登录后投票
   发表时间:2010-07-28  
Hooopo 写道
你配置下环境变量试试~


windows的环境变量?配了啊
0 请登录后投票
   发表时间:2010-07-28  
机器人 写道
你不用插P不就行了。   出来看上帝


不用plugins,没有本事自己写啊,5555
0 请登录后投票
   发表时间:2010-07-28   最后修改:2010-07-28
song.li 写道
机器人 写道
你不用插P不就行了。   出来看上帝


不用plugins,没有本事自己写啊,5555

机器人说的是XP!!!!!!!!!!!!!
0 请登录后投票
   发表时间:2010-07-28  
Hooopo 写道
song.li 写道
机器人 写道
你不用插P不就行了。   出来看上帝


不用plugins,没有本事自己写啊,5555

机器人说的是XP!!!!!!!!!!!!!


呵呵,理解有误,我都说了啊,单位没办法只能用xp
0 请登录后投票
   发表时间:2010-07-28  
song.li 写道
Hooopo 写道
song.li 写道
机器人 写道
你不用插P不就行了。   出来看上帝


不用plugins,没有本事自己写啊,5555

机器人说的是XP!!!!!!!!!!!!!


呵呵,理解有误,我都说了啊,单位没办法只能用xp



装个ubuntu linux很快把,大不了用虚拟机装,难道单位歧视linux?
0 请登录后投票
   发表时间:2010-07-28   最后修改:2010-07-28
http://www.microsoft.com/downloads/details.aspx?familyid=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&displaylang=en

打开下载安装vcredist_x86.exe,重启服务器,rmagick在windows应该可以正常工作了



木剑先生 写道


装个ubuntu linux很快把,大不了用虚拟机装,难道单位歧视linux?


主要针对这个说几句,确实国内很多公司都有这个嗜好,鄙视这个鄙视那个,我认为做出东西就行,你管别人用什么开发的?我最初学rails的时候也是用windows+netbeans,也没死阿。

我现在甚至觉得那些鄙视开发平台的人或多或少有点俗,或者那帮搞底层的人都觉得我们有点神经病,天天围着开发工具争阿争
6 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics