2013-07-20 6 views
3

Railscasts episode 182 (revised)에 표시된대로 잘라 내기 기능을 구현 했으므로 자르기 작업을 정확하게 수행 할 수 없습니다. 잘라내는 것은 항상 작물에서 선택한 영역의 상위 20 %입니다. 'y'매개 변수가 0 인 경우를 제외하고는 자르기 영역이 이미지의 맨 위에 닿는 경우입니다. 그런 다음 수확이 잘됩니다.Carrierwave/Minimagick - 'y'매개 변수가 0 일 때를 제외하고는 항상 자르기가 정확하지 않습니다.

@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! 

는 또한 avatar_uploader에서 crop 방법은 다음과 같이 구현된다 :

이 같은 제어기로부터 crop_avatar 메소드를 호출하고 있음을 제외한 스크린 캐스트에 도시

내 구현 같다

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 

레일 3.2.1, Carrierwave 0.7.1, JCrop 0.9.12를 사용하고 있습니다.

+0

이 글은 오래된 글이지만 앞으로의 혼란을 피하기 위해 매개 변수를 검토하십시오. ': crop_y'를 두 번 설정했습니다. –

답변

3

비슷한 문제가 있었는데 조작 한 이미지의 크기를 조정하는 것이 발견되었습니다! 호출 "resize_to_limit"carrierwave 도우미 메서드를 사용하는 대신 나를 위해 문제를 해결.

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을 읽어 보시기 바랍니다.

+0

제 문제도 같습니다. 나는 rmagick을 사용하고있다. 그리고 위의 해결책은 나를 위해 작동하지 않습니다. –