2017-11-13 6 views
-3

이미지 자르기의 경우 joshholtz의 CropImageView (https://github.com/joshdholtz/CropImageView)를 사용하고 있습니다. 하지만 예외 라인 (x + 너비는 < = bitmap.width()이어야 함) 반환 라인 바로 앞에있는 마지막 줄의 자르기 함수에서 CreateBitmap 함수에서 예외가 발생합니다.joshdholtz CropImageView createbitmap java.lang.IllegalArgumentException : x + 너비가 <= bitmap.width() 여야합니다.

public Bitmap crop(Context context) throws IllegalArgumentException { 
     // Weird padding cause image size 
     int weirdSidePadding = this.getWeirdSideMargin(); 
     int weirdVerticalPadding = this.getWeirdVerticalMargin(); 

     FrameLayout.LayoutParams params = (LayoutParams) mDaBox.getLayoutParams(); 

     // Getting crop dimensions 
     float d = context.getResources().getDisplayMetrics().density; 
     int x = (int)((params.leftMargin - weirdSidePadding) * d); 
     int y = (int)((params.topMargin - weirdVerticalPadding) * d); 
     int width = (int)((this.getWidth() - params.leftMargin - params.rightMargin) * d); 
     int height = (int)((this.getHeight() - params.topMargin - params.bottomMargin) * d); 

     Bitmap crooopppppppppppppppeed = Bitmap.createBitmap(mBitmap, x, y, width, height); 

     return crooopppppppppppppppeed; 
} 

실제로 나는 잠재적으로 같은 질문을 보았지만 불행히도 그들은 내 상황에 따라 나를 도울 수있는 정도가 아닙니다.

이 장벽을 극복하도록 도와 줄 수 있습니까?

+0

실제 코드는 여기에 게시하고 전체 스택 추적은 여기에 게시하십시오. 다른 사이트에 대한 링크를 사용하지 마십시오. –

+0

답변과 안내에 감사드립니다. 위의 코드에서 반환 선 앞에있는 마지막 줄은 예외를 throw합니다. –

답변

0

그래서 createBitmap에서 사용중인 함수는 원래 비트 맵의 ​​하위 섹션에서 비트 맵을 만듭니다. 작동하려면 x + width가 원래 비트 맵의 ​​너비보다 클 수 없습니다 (y + 높이와 동일). x와 y는 모두> = 0이어야합니다. 이것은 여기에 해당하지 않습니다.

이 기능이 무엇을 하려는지는 알지만, 그게 잘못되었습니다. 그것은 자르기와 스케일링의 개념을 혼란스럽게합니다. 한 번에 비트 맵의 ​​크기를 조절하고 자르려면 m 비트의 배율 인수와 함께 createBitmap (비트 맵 소스, int x, int y, int 폭, int 높이, 행렬 m, 부울 필터)을 사용해야합니다. 그리고 여기에 스케일링을하고 싶지는 않습니다. 코드가 왜 밀도를보고 있는지 모르겠지만 그렇게하는 것은 잘못된 것 같습니다.

+0

고맙습니다, Gabe, 대답 해주세요. 인터넷에서 간단한 자르기 라이브러리를 찾았을 때 불행하게도 그 라이브러리를 발견했습니다. 그러나 그것은 나를위한 것이 아닙니다. 내가 찾고있는 것은 단순한 라이브러리이다. (자르기 만해도 좋다. 스케일링은 필요 없다.) 게이, 제안 해 줄래? –