이미지 관리와 표현을 위해서는 비트맵을 익히는게 가장 기본이다. 그 비트맵 관련
내용들을 소개한다.
안드로이드에서 비트맵 관련 클래스는 android.graphics.Bitmap 이다. 그래픽 관련
클래스들은 android.graphics 패키지에 있으며 여기에 포함된 것이다.
그리고 객체 Factory 관리를 위한 BitmapFactory 클래스가 있다. BitmapFactory 는
여러가지 이미지 포맷을 decode 해서 bitmap 으로 변환하는 함수들로 되어있는데
그 이름들은 decodeXXX 로 되어있어서 쉽게 원하는 기능의 함수를 찾을수 있을
것이다.
(1) BitmapFactory 에서 주로 사용하고 있는 함수와 옵션에 대한 설명 |
데이터를 가지고 Bitmap 으로 만들어 줄 때 많이 사용한다.
Camera.PictureCallback 에서 들어오는 데이터가 byte[] 배열로 들어오기 때문이다.
BitmapFactory.decodeFile() : 로컬에 존재하는 파일을 그대로 읽어올 때 쓴다. 파일경로를
파라미터로 넘겨주면 FileInputStream 을 만들어서 decodeStream 을 한다.1 | Bitmap orgImage = BitmapFactory.decodeFile(“/sdcard/test.jpg”); |
BitmapFactory.decodeResource() : Resource 폴더에 저장된 그림파일을 Bitmap 으로
만들어 리턴해준다1 2 | 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의 배수로 설정한다.1 2 3 | BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 4; Bitmap orgImage = BitmapFactory.decodeFile(“/sdcard/test.jpg”, options); |
(2) Bitmap 과 BitmapFactory 을 사용한 여러가지 예제 |
할수 있다. 하지만 예를 들어 크기를 일정하게 2, 4 배등으로 줄일거면 굳이 createScaledBitmap
을 사용하지 않고 위에서 설명한 BitmapFactory.Options 의 inSampleSize 를 사용하면 된다.
아래는 SD 카드에서 이미지를 불러와 Bitmap 을 원하는 크기 만큼 줄인 예제이다.
1 2 | Bitmap orgImage = BitmapFactory.decodeFile(“/sdcard/test.jpg”); Bitmap resize = Bitmap.createScaledBitmap(orgImage, 300, 400, true ); |
다음은 BitmapFactory.Options 사용해서 이미지를 4배로 줄인것인데 createScaledBitmap 을
사용해서 용량을 줄인 이미지에 다시 입력한 크기만큼 가로, 세로 크기를 줄인 것이 된다.
1 2 3 4 | 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 ); |
SSISO Community