|
안드로이드 (Android) Bitmap 구현, 관리 하기 |
|
개발환경 : JDK 1.5, eclipse-galileo, android googleAPI 7, window XP |
모든 프로그램에서 이미지 관리의 기본은 비트맵이다. 안드로이드에서도 마찬가지로
이미지 관리와 표현을 위해서는 비트맵을 익히는게 가장 기본이다. 그 비트맵 관련
내용들을 소개한다.
안드로이드에서 비트맵 관련 클래스는 android.graphics.Bitmap 이다. 그래픽 관련
클래스들은 android.graphics 패키지에 있으며 여기에 포함된 것이다.
그리고 객체 Factory 관리를 위한 BitmapFactory 클래스가 있다. BitmapFactory 는
여러가지 이미지 포맷을 decode 해서 bitmap 으로 변환하는 함수들로 되어있는데
그 이름들은 decodeXXX 로 되어있어서 쉽게 원하는 기능의 함수를 찾을수 있을
것이다.
|
(1) BitmapFactory 에서 주로 사용하고 있는 함수와 옵션에 대한 설명 |
BitmapFactory.decodeByteArray() : Camera.PictureCallBack 으로부터 받은 Jpeg 사진
데이터를 가지고 Bitmap 으로 만들어 줄 때 많이 사용한다.
Camera.PictureCallback 에서 들어오는 데이터가 byte[] 배열로 들어오기 때문이다.
BitmapFactory.decodeFile() : 로컬에 존재하는 파일을 그대로 읽어올 때 쓴다. 파일경로를
파라미터로 넘겨주면 FileInputStream 을 만들어서 decodeStream 을 한다.Bitmap orgImage = BitmapFactory.decodeFile(“/sdcard/test.jpg”);
BitmapFactory.decodeResource() : Resource 폴더에 저장된 그림파일을 Bitmap 으로
만들어 리턴해준다Bitmap orgImage =
BitmapFactory.decodeResource(getResources(), R.drawable.test02);
BitmapFactory.decodeStream() : InputStream 으로부터 Bitmap 을 만들어 준다.
BitmapFactory.Options : BitmapFactory 가 사용하는 옵션클래스이다. Options 객체를 생성하고
설정하고자 하는 옵션을 넣은후 BitmapFactory 의 함수 실행시 파라미터로 넘기면된다.
inSampleSize : decode 시 얼마나 줄일지 설정하는 옵션인데 1보다 작을때는 1이 된다.
1보다 큰값일 때 1/N 만큼 이미지를 줄여서 decoding 하게 된다. 보통 2의 배수로 설정한다.BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 4; Bitmap orgImage = BitmapFactory.decodeFile(“/sdcard/test.jpg”, options);
|
(2) Bitmap 과 BitmapFactory 을 사용한 여러가지 예제 |
BitmapFactory 로 이미지를 읽어온뒤 Bitmap.createScaledBitmap() 사용해서 크기를 재조정
할수 있다. 하지만 예를 들어 크기를 일정하게 2, 4 배등으로 줄일거면 굳이 createScaledBitmap
을 사용하지 않고 위에서 설명한 BitmapFactory.Options 의 inSampleSize 를 사용하면 된다.
아래는 SD 카드에서 이미지를 불러와 Bitmap 을 원하는 크기 만큼 줄인 예제이다.
Bitmap orgImage = BitmapFactory.decodeFile(“/sdcard/test.jpg”); Bitmap resize = Bitmap.createScaledBitmap(orgImage, 300, 400, true);
다음은 BitmapFactory.Options 사용해서 이미지를 4배로 줄인것인데 createScaledBitmap 을
사용해서 용량을 줄인 이미지에 다시 입력한 크기만큼 가로, 세로 크기를 줄인 것이 된다.
BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 4; Bitmap orgImage = BitmapFactory.decodeFile(“/sdcard/test.jpg”, options); Bitmap resize = Bitmap.createScaledBitmap(orgImage, 300, 400, true);
'안드로이드 개발' 카테고리의 다른 글
| 안드로이드(Android) 기본 프로젝트 생성 (0) | 2010.08.31 |
|---|---|
| 안드로이드(Android) SD 카드에 이미지나 파일 추가하기 (7) | 2010.08.25 |
| 안드로이드 (Android) Bitmap 구현, 관리 하기 (13) | 2010.08.25 |
| android 안드로이드에서 문자열을 표현하는 방법 (3) | 2010.08.25 |
| (1) 안드로이드 (android) 의 ImageView 레이아웃에 대한 사용법 (6) | 2010.08.25 |
| (2) 안드로이드(Android) 의 ImageView 레이아웃 옵션과 사용예제들 - 1 (2) | 2010.08.25 |

댓글을 달아 주세요
으흠 좋은 글 잘 보았습니다. 팩토리로부터 스트림으로 읽어들일려고 하거든요 ^_^
안드로메다 2010.09.11 19:44 댓글주소 수정/삭제 댓글쓰기
저 다른 강좌는 소스가 다 있는데...
이 곳은 왜 없나요..전 비트맵불러와서 분할 하는거 공부하고 있는데요
필요하거든요...부탁드립니다.
jojae1122 2011.05.18 01:05 댓글주소 수정/삭제 댓글쓰기
비트맵을 분할하여
직쏘퍼즐을 만들려고합니다.
윗부분은 알겠는데
잘라내어 분할하는걸 모르겠습니다 ㅜ
소스좀 올려주시거나
angelos07@nate.com으로
소스좀 보내주시면 감사하겠습니다 ㅠㅠ
yeseul 2011.10.19 21:44 댓글주소 수정/삭제 댓글쓰기
이 비트맵을
canvas위에다가 올려놓을 건데요 ;;
아무리 해봐도 안 되네요 ㅜㅜㅜ
방법 없을까요 ??
제가 하려는 건 배경이미지위에 그리는 거에요 ;;;
뭐 이래 2011.12.07 11:54 댓글주소 수정/삭제 댓글쓰기
소스를 달라니 거참 이상한 사람들이네요 ㅡ ㅡ....
이렇게 도움 주는 정보가 어딧다고 밥까지 떠먹여 달라그러나 ㅋㅋ
좋은 정보 감사드립니다. 버퍼로써 관리하려면 creatScaleBitMap을 써야겠군요.
hart 2012.02.23 13:56 댓글주소 수정/삭제 댓글쓰기
이런 좋은글에 댓글이 없으면 안되죠
감사합니다 ㅋㅋㅋ
good 2012.05.31 17:35 댓글주소 수정/삭제 댓글쓰기
잘보고갑니다~
황민규 2012.10.04 11:54 댓글주소 수정/삭제 댓글쓰기
좋은 정보에 잘정리된 내용 감사합니다.
문정수 2013.01.28 10:27 댓글주소 수정/삭제 댓글쓰기
소스를 달라니~~-_-
과제 하는 애들인가? -_-
아 저런 넘들이 회사에 들어 올까 겁나네요 -_-
pooh오빠 2013.08.16 18:16 댓글주소 수정/삭제 댓글쓰기
아 저런 쉬운것도 생각을 못 하다니...ㄲㄲㄲㄲㄲㄲㄲㄲㄲㄲㄲㄲㄲㄲㄲㄲㄲㄲㄲㄲㄲㄲㄲㄲㄲㄲㄲㄲㄲ
감사합니다 2014.07.11 13:46 댓글주소 수정/삭제 댓글쓰기
강좌글 잘보고갑니다..
저도 소스달라는 분들은 이해 안가네요 .. 직접해보는게 더 도움되요.
cosmos 2016.08.26 00:13 댓글주소 수정/삭제 댓글쓰기
온라인에 있는 이미지를 가져와 비트맵을 만들려면 어떻게 해야 하나요?
잘보고갑니다