|
|
|
개발환경 : 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);




댓글을 달아 주세요
shinlucky 2010/06/26 19:59 댓글주소 수정/삭제 댓글쓰기
으흠 좋은 글 잘 보았습니다. 팩토리로부터 스트림으로 읽어들일려고 하거든요 ^_^
안드로메다 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 댓글주소 수정/삭제 댓글쓰기
소스를 달라니~~-_-
과제 하는 애들인가? -_-
아 저런 넘들이 회사에 들어 올까 겁나네요 -_-