¿Cómo hago algo rápidamente en Rmagick para probar que funciona?
Pregunta
Necesito poder convertir rápidamente una imagen (dentro de un controlador Rails) para que la empresa de alojamiento que administra nuestra aplicación pueda probar rápidamente en cualquier momento para garantizar que rmagick no solo se haya instalado correctamente, sino que también se pueda llamar a través de Rails Stiack. ¿Cuál es el código limpio más rápido que puedo usar para hacer esto?
Solución 2
Quería hacer esto para poder acceder fácilmente a él con un navegador web, ya que estoy implementando en servidores administrados, a los que no tengo acceso de shell (para mayor seguridad).
Entonces esto es lo que hice
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 #------
y luego en rmagick.html.erb
<%= image_tag @path %>
Ahora puedo presionar el controlador y, si veo una imagen, sé que rmagic está instalado.
Otros consejos
require 'RMagick'
image = Magick::Image.new(110, 30){ self.background_color = 'white' }
image.write('/tmp/test.jpg')
Me conectaría al servidor y probaría su código en script/consola.Esto seguirá pasando por la pila de Rails, pero le permitirá comprobar rápidamente que su código funciona como espera y que RMagick e ImageMagick están instalados correctamente sin tener que implementar nada.
Cuando llegue el momento de escribir su código real, sugeriría poner el código de conversión de imagen dentro de un modelo, para que pueda llamarlo fuera del contexto de un controlador.
Utilice script/consola y llame al código en un modelo o controlador que haga algo como lo siguiente:
require 'RMagick'
include Magick
img = ImageList.new('myfile.jpg')
img.crop(0,0,10,10) # or whatever
img.write('mycroppedfile.jpg')