Основное изменение размеров изображения в Ruby on Rails

Я создаю немного сайта для хранения фото для интранет нашего дома, и у меня есть функция загрузки, которая загружает фотографию в первоначальном размере в базу данных. Однако я также хочу сохранить фотографию в четырех других размерах: W=1024, W=512, W=256 и W=128, но только размеры, меньшие, чем первоначальный размер (например, если исходная ширина 511, только генерируют 256 и 128). Изображение с шириной 128 должно всегда быть сгенерировано (потому что это - миниатюра). Кроме того, resization должен всегда быть с пропорциональной шириной и высотой. Как я могу реализовать это? У меня уже есть этот код для загрузки фотографии:

pic.rb <-модель

def image_file=(input_data)
  self.filename     = input_data.original_filename
  self.content_type = input_data.content_type.chomp
  self.binary_data  = input_data.read
  # here it should generate the smaller sizes
  #+and save them to self.binary_data_1024, etc...
end

new.rb <-представление

<h1>New pic</h1>

<% form_for(@pic, :html => {:multipart => true}) do |f| %>
  <%= f.error_messages %>

  <p>
    <%= f.label :title %><br />
    <%= f.text_field :title %>
  </p>
  <p>
    <%= f.label :description %><br />
    <%= f.text_field :description %>
  </p>
  <p>
    <%= f.label :image_file %><br />
    <%= f.file_field :image_file %>
  </p>
  <p>
    <%= f.submit 'Create' %>
  </p>
<% end %>

<%= link_to 'Back', pics_path %>

Спасибо

14
задан 14 March 2010 в 13:27
поделиться

2 ответа

Просто используйте скрепку или attachment_fu

10
ответ дан 1 December 2019 в 06:53
поделиться

Вы можете изменить размер с помощью гема RMagick.

Это просто пример, который вы можете адаптировать:

require 'RMagick'

f = File.new( File.join(save_path, self.filename), "wb"  )
f.write form_file.read #remeber to set :html=>{:multipart => true} in form
f.close

image = Magick::Image.read(self.filename).first
image.change_geometry!("640x480") { |cols, rows, img|
    newimg = img.resize(cols, rows)
    newimg.write("newfilename.jpg")
}

Подробнее здесь: http://www.imagemagick.org/script/api.php#ruby

26
ответ дан 1 December 2019 в 06:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: