티스토리 뷰
안드로이드에서 이미지파일을 들고오는 방법은 여러가지지만 다음과같은 방법으로 가져올 수 있다.
Bitmap mMyBitmap = BitmapFactory.decodeFile(imageFilePath); |
하지만 이미지파일이 클경우 위에 코드 한줄만 쓰더라도 OutOfMemoryError 를 내뱉을 수 있다.
그래서 쉽게 쓸 수 있는방법이 sampleSize로 원본이미지를 줄여서 가져오는 방법이 있지만.
이는 작은이미지까지도 줄여서 가져와버리는 문제가 있다.
다음은 이미지가 크더라도 오류없이 정상적으로 가져올 수 있는 여러방법 중 하나이다.
String imageFilePath = "이미지파일 경로"; int mOversize = 1000; BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(imageFilePath, options); options.inJustDecodeBounds = false; if(Math.max(options.outWidth, options.outHeight) > mOversize) options.inSampleSize = 2; else options.inSampleSize = 1; mMyBitmap = BitmapFactory.decodeFile(_imageFilePath, options); |
options.inJustDecodeBounds = true; 을 적용 후 decode 하게되면 Bitmap 은 null로 return 되지만 pixel 정보는 가져온다.
그 pixel 사이즈만큼 sampleSize를 지정하면 OutOfMemory오류없이 Bitmap을 가져올 수 있다.
if(Math.max(options.outWidth, options.outHeight) > mOversize) 부분은 적절히 코딩해서
유동적으로 sampleSize를 지정할 수 있게하면 되겠다.
'Development' 카테고리의 다른 글
[Linux] UbuntuServer : yum 설치 (0) | 2013.02.18 |
---|---|
[Android] Android Core media format and codec support. (0) | 2013.02.08 |
[Android] ScrollView 갱신 (0) | 2013.01.14 |
[Android] Webview session, cookie, cache 초기화 (0) | 2012.11.29 |
[Android] JellyBean 4.2 Debugging mode _ 젤리빈 4.2 개발자옵션 활성화 (0) | 2012.11.16 |
댓글
최근에 올라온 글
글 보관함
- Total
- Today
- Yesterday