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