我如何在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')