Ruby on rails 如何在使用Rails、Carrierwave和Minimagick上传时裁剪图像?
我读过:Ruby on rails 如何在使用Rails、Carrierwave和Minimagick上传时裁剪图像?,ruby-on-rails,ruby-on-rails-3,minimagick,Ruby On Rails,Ruby On Rails 3,Minimagick,我读过: 所以我试着: 编码:utf-8 类ProjectPictureUploader
version:thumb-do
处理大小调整到适合:[300,无]
加工裁剪:“300x150+0+0”
#工艺调整_和_裁剪:200
结束
私有的
#最简单的方法
def裁剪(几何)
操纵do | img |
图像裁剪(几何)
img
结束
结束
#调整大小并从中心裁剪方形
def RESIGH_和_裁剪(尺寸)
操纵做|想象|
如果图像[:宽度]图像[:高度]
移除=((图像[:宽度]-图像[:高度])/2)。圆形
image.shave(“#{remove}x0”)
结束
image.resize(“#{size}x#{size}”)
形象
结束
结束
从此处调整_和_裁剪的大小:
是的,我在《cropper》中发现了拼写错误,但没有帮助。
# encoding: utf-8
class ProjectPictureUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :thumb do
process :cropper
# process :crop
process resize_to_fit: [200, 200]
end
def cropper
manipulate! do |img|
# if model.crop_x.present?
image = MiniMagick::Image.open(current_path)
crop_w = (image[:width] * 0.8).to_i
crop_y = (image[:height] * 0.8).to_i
crop_x = (image[:width] * 0.1).to_i
crop_y = (image[:height] * 0.1).to_i
# end
img = img.crop "#{crop_x}x#{crop_y}+#{crop_w}+#{crop_h}"
img
end
end
def crop
if model.crop_x.present?
resize_to_limit(700, 700)
manipulate! do |img|
x = model.crop_x
y = model.crop_y
w = model.crop_w
h = model.crop_h
w << 'x' << h << '+' << x << '+' << y
img.crop(w)
img
end
end
end
end
class Project < ActiveRecord::Base
...
mount_uploader :picture, ProjectPictureUploader
end