如Railscasts episode 182 (revised)所示实现了裁剪功能,我似乎无法准确地完成裁剪工作。裁剪的内容始终是作物中所选区域的前20%。除非'y'参数为0,即裁剪区域触及图像顶部时。然后裁剪工作正常。
我的实现与截屏视频中显示的相同,只是我从控制器调用crop_avatar
方法,如下所示:
@profile.crop_x = params[:profile][:crop_x]
@profile.crop_y = params[:profile][:crop_y]
@profile.crop_h = params[:profile][:crop_y]
@profile.crop_w = params[:profile][:crop_w]
@profile.crop_avatar
@profile.save!
crop
中的avatar_uploader
方法也是这样实现的:
def crop
if model.crop_x.present?
resize_to_limit(500, 500)
manipulate! do |img|
x = model.crop_x
y = model.crop_y
w = model.crop_w
h = model.crop_h
img.crop "#{w}x#{h}+#{x}+#{y}"
img
end
end
end
我正在使用Rails 3.2.1,Carrierwave 0.7.1,JCrop 0.9.12。
答案 0 :(得分:3)
我遇到了类似的问题,我发现在操作中调整图像大小!调用而不是使用“resize_to_limit”载波波辅助方法为我解决了这个问题。
def crop
if model.crop_x.present?
manipulate! do |img|
x = model.crop_x
y = model.crop_y
w = model.crop_w
h = model.crop_h
img.resize "500x500"
img.crop "#{w}x#{h}+#{x}+#{y}"
img
end
end
end
我还强烈建议您阅读this answer,了解有关此代码实际内容的详细信息。