Как мне быстро сделать что-то в Rmagick, чтобы проверить, как это работает - PullRequest
3 голосов
/ 16 сентября 2008

Мне нужно иметь возможность быстро конвертировать образ (внутри контроллера rails), чтобы хостинговая компания, использующая наше приложение, могла в любое время быстро протестировать, чтобы убедиться, что rmagick не только успешно установлен, но и может называться через Что за самый быстрый чистый код, который я могу использовать для этого?

Ответы [ 4 ]

14 голосов
/ 16 сентября 2008
require 'RMagick'

image = Magick::Image.new(110, 30){ self.background_color = 'white' }
image.write('/tmp/test.jpg')
4 голосов
/ 16 сентября 2008

Я хотел сделать это так, чтобы я мог легко подключиться к нему через веб-браузер, поскольку я развернут на управляемых серверах, к которым у меня нет доступа к оболочке (для повышения безопасности).

Так вот что я сделал

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.

0 голосов
/ 16 сентября 2008

Используйте скрипт / консоль и вызовите код в модели или контроллере, который выполняет что-то вроде следующего:

require 'RMagick'
include Magick
img = ImageList.new('myfile.jpg')
img.crop(0,0,10,10) # or whatever
img.write('mycroppedfile.jpg')
0 голосов
/ 16 сентября 2008

Я бы зашел на сервер и опробовал ваш код в скрипте / консоли. Это все равно будет проходить через стек рельсов, но позволит вам быстро проверить, что ваш код работает так, как вы ожидаете, и что RMagick и ImageMagick установлены правильно, без необходимости развертывания.

Когда придет время написать ваш реальный код, я бы предложил поместить код преобразования изображения в модель, чтобы вы могли вызывать его вне контекста контроллера.

...