본문 바로가기

BitmapFactory

[Android] 이미지 크기 알아보는 방법 /** Get Bitmap's Width **/ public static int getBitmapOfWidth( String fileName ){ try { BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(fileName, options); return options.outWidth; } catch(Exception e) { return 0; } } /** Get Bitmap's height **/ public static int getBitmapOfHeight( String fileName ){ try { BitmapFactory.Opt.. 더보기
[Android] !!! FAILED BINDER TRANSACTION !!! 안드로이드에서 Material Design을 계속 밀어줌으로써,Activity 간의 이동을 할 때 Bitmap을 넘겨주고자 하는 일이 많아졌다. Intent에 Bitmap을 put 시킬 때, 안드로이드에서는 이미지 크기가 40KB 로 제한되어 있다.따라서 40KB 이상의 Bitmap을 넣을 경우!!! 아래와 같은 Log를 볼 수 있다. !!! FAILED BINDER TRANSACTION !!! 그럼.. 이미지의 크기를 낮춰야 할까??? 그럼 이미지가 깨지게 되는데.. 어떻하지??이벤트 마다 이미지를 다시 로딩 해야 하나??? 화면을 넘어가서 로딩 할까?? 그럼 화면에서 정상적인 동작이 이뤄지지 않을 수도 있다.(예를 들어 모션은 들어 갔는데 이미지는 아직 로딩이 안되는 상태에서 이미지를 구할려고 한다면.. 더보기
[Android] java.lang.OutOfMemoryError: bitmap size exceeds VM budget 이건 한정된 메모리를 초과 했을 때 뜨는 오류 입니다. 먼저 , 전에 제가 적은 블로그 내용을 확인해보고, 그래도 안될 시에는 이 방법을 해보세요. http://gogorchg.tistory.com/entry/Android-BitmapFactory%EC%97%90-%EB%AC%B8%EC%A0%9C%EC%A0%90 Bitmap이 차지하는 메모리가 급속하게 줄어듭니다. Bitmap bitmap; BitmapFactory.Options option = new BitmapFactory.Options(); option.inSampleSize = 1; option.inPurgeable = true; option.inDither = true; bitmap = BitmapFactory.decodeResource(mRe.. 더보기
[Android] BitmapFactory에 문제점 BitmapFactory를 이용하여 Decode할 경우, Out of memory 에러가 자주 발생하죠. Bitmap bitmap; BitmapFactory.Options option = new BitmapFactory.Options(); option.inSampleSize = 2; bitmap = BitmapFactory.decodeResource(mRes, mRes.getIdentifier(fileName, null, null), option); 보통 위 같은 경우에는 에러는 막을 수 있지만, 보시면 아는 바와 같이 Bitmap크기를 반으로 줄여버립니다. 저장한 Bitmap을 사용할 때, 2배로 키우게 되면 이미지가 깨지게 되죠. Bitmap.createScaledBitmap(src, dstWidth.. 더보기