안드로이드 (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);
'안드로이드 개발' 카테고리의 다른 글
안드로이드 개발을 위한 환경설정과 프로젝트 생성 (10) | 2010.08.31 |
---|---|
안드로이드(Android)에서 설치한 프로그램 삭제하기 (0) | 2010.08.31 |
안드로이드(Android) 기본 프로젝트 생성 (0) | 2010.08.31 |
안드로이드(Android) SD 카드에 이미지나 파일 추가하기 (7) | 2010.08.25 |
android 안드로이드에서 문자열을 표현하는 방법 (3) | 2010.08.25 |
(1) 안드로이드 (android) 의 ImageView 레이아웃에 대한 사용법 (6) | 2010.08.25 |
(2) 안드로이드(Android) 의 ImageView 레이아웃 옵션과 사용예제들 - 1 (2) | 2010.08.25 |
(3) 안드로이드(Android) 의 ImageView 레이아웃 옵션과 사용예제들 - 2 (24) | 2010.08.25 |