如何在不使用RMagick的情况下在Ruby(Rails)中调整图像大小?

时间:2013-10-07 21:08:11

标签: ruby-on-rails ruby image-processing resize rmagick

我需要从URL加载图像(存储在Amazon S3存储桶中),从该图像创建缩略图并将其(新缩略图)上传到同一个S3存储桶。

最近5个小时我试图在我的Lion OSX上安装RMagick,但我的所有线程都从RMagic变灰了。似乎无法在OSX上安装RMagick。

因此,还有其他办法吗?

修改Gemfile中: 宝石“rmagick”

错误:

uninitialized constant ImagesController::Magick

在控制器中:

  def resize_images
    require 'rubygems'
    require 'RMagick'
    include Magick
    require "open-uri"

    file_url = open('URL to image')
    save_path = "/"

    f = File.new( File.join(save_path, file_url), "wb")
    f.write file_url.read 
    f.close

    image = Magick::Image.read(file_url).first
    image.change_geometry!("1500x150") { |cols, rows, img|
        newimg = img.resize(cols, rows)
        newimg.write("newfilename.jpg")
    }
  end

EDIT2:

当我把它放入Gemfile

gem "rmagick", :require => 'RMagick'

捆绑它并运行服务器,我收到以下错误:

/Users/adam/.rvm/gems/ruby-1.9.3-p385@global/gems/bundler-1.2.3/lib/bundler/runtime.rb:197: warning: Insecure world writable dir /usr/local/mysql in PATH, mode 040777
/Users/adam/.rvm/gems/ruby-1.9.3-p385@global/gems/bundler-1.2.3/lib/bundler/runtime.rb:197: warning: Insecure world writable dir /usr/local/mysql in PATH, mode 040777
/Users/adam/.rvm/gems/ruby-1.9.3-p385@global/gems/bundler-1.2.3/lib/bundler/runtime.rb:68:in `require': cannot load such file -- RMagick (LoadError)
    from /Users/adam/.rvm/gems/ruby-1.9.3-p385@global/gems/bundler-1.2.3/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
    from /Users/adam/.rvm/gems/ruby-1.9.3-p385@global/gems/bundler-1.2.3/lib/bundler/runtime.rb:66:in `each'
    from /Users/adam/.rvm/gems/ruby-1.9.3-p385@global/gems/bundler-1.2.3/lib/bundler/runtime.rb:66:in `block in require'
    from /Users/adam/.rvm/gems/ruby-1.9.3-p385@global/gems/bundler-1.2.3/lib/bundler/runtime.rb:55:in `each'
    from /Users/adam/.rvm/gems/ruby-1.9.3-p385@global/gems/bundler-1.2.3/lib/bundler/runtime.rb:55:in `require'
    from /Users/adam/.rvm/gems/ruby-1.9.3-p385@global/gems/bundler-1.2.3/lib/bundler.rb:128:in `require'
    from /Users/adam/rubydev/looky/config/application.rb:9:in `<top (required)>'
    from /Users/adam/.rvm/gems/ruby-1.9.3-p385/gems/railties-3.2.9/lib/rails/commands.rb:53:in `require'
    from /Users/adam/.rvm/gems/ruby-1.9.3-p385/gems/railties-3.2.9/lib/rails/commands.rb:53:in `block in <top (required)>'
    from /Users/adam/.rvm/gems/ruby-1.9.3-p385/gems/railties-3.2.9/lib/rails/commands.rb:50:in `tap'
    from /Users/adam/.rvm/gems/ruby-1.9.3-p385/gems/railties-3.2.9/lib/rails/commands.rb:50:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

1 个答案:

答案 0 :(得分:0)

我相信,

MiniMagickImageScience都是相当受欢迎的选择。也就是说,在OSX上安装RMagick肯定是可能的。也许如果你描述了你遇到的错误,可以纠正它。