我如何在Rmagick中快速执行某项操作以测试其功能

时间:2020-03-05 18:55:31  来源:igfitidea点击:

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

解决方案

回答

我将登录到服务器,然后在脚本/控制台中尝试代码。这仍然会通过rails堆栈,但是将允许我们快速检查代码是否按预期方式工作,以及是否正确部署RMagick和ImageMagick,而无需部署任何内容。

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

回答

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

require 'RMagick'
include Magick
img = ImageList.new('myfile.jpg')
img.crop(0,0,10,10) # or whatever
img.write('mycroppedfile.jpg')

回答

我想这样做,以便在将Web服务器部署到托管服务器时可以轻松地通过Web浏览器访问它,而我没有外壳访问权限(以提高安全性)。

这就是我所做的

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。

回答

require 'RMagick'

image = Magick::Image.new(110, 30){ self.background_color = 'white' }
image.write('/tmp/test.jpg')