0

我正在尝试从浏览器上传文件,然后从中制作一个缩略图,然后将两者都上传到 s3。

 File.open(params[:file][:tempfile]) do |p|
      AWS::S3::Base.establish_connection!(
          :access_key_id     => settings.s3_key,
          :secret_access_key => settings.s3_secret)
      AWS::S3::S3Object.store(pic_name,p,settings.bucket,:access => :public_read)

      thumb = Magick::Image.read(p)
      thumb.crop_resized!(75, 75, Magick::NorthGravity)

      AWS::S3::Base.establish_connection!(
          :access_key_id     => settings.s3_key,
          :secret_access_key => settings.s3_secret)
      AWS::S3::S3Object.store(pic_name + "s",thumb,settings.bucket,:access => :public_read)

我已经尝试了大多数可能的代码组合以使其工作,但它给了我一个分段错误

c:0060 p:---- s:0261 b:0261 l:000260 d:000260 CFUNC  :read
c:0059 p:0117 s:0257 b:0257 l:002638 d:000256 BLOCK  /Users/gkay/Documents/yirmiyedi/web/banne/app/controllers/firsat.rb:33
c:0058 p:---- s:0253 b:0253 l:000252 d:000252 FINISH
c:0057 p:---- s:0251 b:0251 l:000250 d:000250 CFUNC  :open
c:0056 p:0190 s:0247 b:0247 l:002638 d:000246 LAMBDA /Users/gkay/Documents/yirmiyedi/web/banne/app/controllers/firsat.rb:27

所以它在 RMagic 尝试打开文件时启动。我试过很多东西,比如

thumb = Magick::Image.read(p).first or [0] etc but none of them worked.

有任何想法吗?params[:file] 是保存文件的 post 参数

4

4 回答 4

1

我建议改用Mini Magick - 它使用的内存少得多,而且错误少得多。RMagick 有很多问题,但 mini magick 没有。从一个切换到另一个非常容易。

于 2012-02-28T09:31:15.673 回答
0

尝试添加

GC.start

在您的代码顶部

于 2012-02-28T08:55:08.897 回答
0

当我卸载 imagemagick,卸载 rmagick gem,在没有 openmp 的情况下安装 imagemagick,然后再次安装 rmagick gem 时问题解决了。

于 2012-02-28T09:33:01.547 回答
0

For any newer visitors, ImageMagick currently works on Heroku without RMagick, so no need to include it in your gemfile.

However, if you're using Paperclip, you'll need to specify gem 'cocaine', '0.3.2', as noted in this post, as some other versions do not work.

于 2012-10-15T22:28:41.597 回答