Ruby on Rails中的基本图像大小调整
image-processing
18
0

我正在为我们家庭的Intranet创建一个小的照片共享站点,并且具有上传功能,该功能可以将原始大小的照片上传到数据库中。但是,我还想将照片保存为其他四个尺寸:W = 1024,W = 512,W = 256和W = 128,但仅小于原始尺寸的尺寸(例如,如果原始宽度为511,则仅生成256和128)。始终应生成宽度为128的图像(因为它是缩略图)。同样,调整大小应始终与宽度和高度成比例。我该如何实施?我已经有了以下代码来上传照片:

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 %>

谢谢

参考资料:
Stack Overflow
收藏
评论
共 4 个回答
高赞 时间 活跃

您可以使用RMagick gem调整大小。

这只是您可以适应的一个示例:

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

收藏
评论

只需使用回形针附件 _fu

收藏
评论

知道这是一个古老的故事,但是根据此主题,这是一个非常不错的railscast: http: //railscasts.com/episodes/253-carrierwave-file-uploads它正在使用rmagic和carrierwave。

收藏
评论

我尝试了以下方式。它的工作正常。我希望这会有所帮助。

1.在Gemfile中添加以下gem:

gem "ImageResize", "~> 0.0.5"

2.运行包

3.在控制器功能中使用此功能:

require 'rubygems'
require 'ImageResize'

#input_image_filename, output_image_filename, max_width, max_height
Image.resize('big.jpg', 'small.jpg', 40, 40)
收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题