Railscasts のエピソード 182 (改訂版)に示されているようにトリミングする機能を実装しましたが、トリミング作業を正確に行うことができないようです。トリミングされるのは、常にトリミングで選択された領域の上位 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
メソッド inavatar_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 を使用しています。