3

我需要能够快速转换图像(在 rails 控制器内),以便使用管理我们的应用程序的托管公司可以随时快速测试,以确保 rmagick 不仅安装成功,而且可以通过 rails stiack 调用,我可以用来执行此操作的最快的干净代码是什么?

4

4 回答 4

14
require 'RMagick'

image = Magick::Image.new(110, 30){ self.background_color = 'white' }
image.write('/tmp/test.jpg')
于 2008-09-16T14:01:36.847 回答
4

我想这样做,以便我可以使用 Web 浏览器轻松访问它,因为我正在部署到托管服务器,而我没有 shell 访问权限(以提高安全性)。

所以这就是我所做的

class DiagnosticsController < ApplicationController
  require 'RMagick'

  def rmagick
    images_path = "public/images"
    file_name = "rmagick_generated_thumb.jpg"
    file_path = images_path + "/"+ file_name

    File.delete file_path if File.exists? file_path
    img = Magick::Image.read("lib/sample_images/magic.jpg").first
    thumb = img.scale(0.25)
    @path = file_name
    thumb.write file_path
  end
end #------

然后在 rmagick.html.erb

<%= image_tag @path %>

现在我可以点击控制器,如果我看到图像,我知道 rmagic 已安装。

于 2008-09-16T11:56:34.947 回答
0

我会登录到服务器并在脚本/控制台中试用您的代码。这仍将通过 rails 堆栈,但允许您快速检查您的代码是否按预期方式工作,以及 RMagick 和 ImageMagick 是否已正确安装,而无需部署任何东西。

当需要编写您的实际代码时,我建议将图像转换代码放在模型中,这样您就可以在控制器的上下文之外调用它。

于 2008-09-16T10:12:16.477 回答
0

使用脚本/控制台,并在执行以下操作的模型或控制器中调用代码:

require 'RMagick'
include Magick
img = ImageList.new('myfile.jpg')
img.crop(0,0,10,10) # or whatever
img.write('mycroppedfile.jpg')
于 2008-09-16T10:14:48.750 回答