MiniMagick:做一个正方形

时间:2014-03-21 07:13:49

标签: ruby-on-rails ruby imagemagick imagemagick-convert minimagick

我这样做:

begin
  image = MiniMagick::Image.open(params[:avatar_file].path)
  unless image.valid?
    raise nil
  end
rescue
  return head :not_acceptable
end
image.format 'jpeg'
image.resize '128x128'
image.write dir.to_s + current_user.id.to_s + '_128x128.jpg'

调整大小后,如果图像不是正方形,则其中一个边有128个像素,第二个边比第一个小。

我想通过裁剪图像的中心来使它们大小相同。

据我所知,"转换" ImageMagick的实用工具有重力中心"但我不确定这是我需要的以及如何在MiniMagick中使用它。

1 个答案:

答案 0 :(得分:2)

答案在image.combine_options块中:

begin
  image = MiniMagick::Image.open(params[:avatar_file].path)
  unless image.valid?
    raise nil
  end
rescue
  return head :not_acceptable
end
image.format 'jpeg'
image.combine_options do |c|
  c.resize '128x128^'
  c.gravity 'center'
  c.extent '128x128'
end
image.write dir.to_s + current_user.id.to_s + '_128x128.jpg'

ImageMagick变种:

convert stock.jpg -resize 128x128^ -gravity center -extent 128x128 result.jpg