3

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 を使用しています。

4

1 に答える 1