이번에는 Bitmap 데이터 형을 byte Array로 변환하거나 혹은 그 역으로 변환하는 예제를 다루어 보도록 하겠습니다.
해결책
ByteArrayOutputStream 인스턴스를 생성한 후, Bitmap의 compress 메서드를 통해 비트맵을 압축하여 stream에 담습니다.
BitmapFactory의 decodeByteArray 메서드를 통해 byte Array를 Bitmap으로 변환합니다.
토의
안드로이드의 Bitmap은 비트맵 데이터를 stream에 넣어주는 compress 메서드를 제공하고 있습니다.
- public byte[] bitmapToByteArray( Bitmap $bitmap ) {
- ByteArrayOutputStream stream = new ByteArrayOutputStream() ;
- $bitmap.compress( CompressFormat.JPEG, 100, stream) ;
- byte[] byteArray = stream.toByteArray() ;
- return byteArray ;
- }
compress 인자 값에는 압축 옵션( JPEG, PNG ) 와 품질 설정 ( 0 - 100까지의 int형 ), 그리고 압축된 바이트배열을 담을 stream을 넘겨줍니다.
byteArray는 stream의 toByteArray() 메서드를 통해 반환받을 수 있습니다.
다음은 역으로, 바이트 배열로부터 비트맵을 생성하는 코드 입니다.
- public Bitmap byteArrayToBitmap( byte[] $byteArray ) {
- Bitmap bitmap = BitmapFactory.decodeByteArray( $byteArray, 0, $byteArray.length ) ;
- return bitmap ;
- }
바이트 배열로부터 비트맵 생성은 BitmapFactory의 decodeByteArray의 메서드를 통해 간단히 생성할 수 있습니다. decodeByteArray의 메서드 인자값으로 바이트 배열과 offset(배열의 시작점), length(decode할 바이트 배열의 길이)를 넘겨줍니다.
결과
관련예제
'Programming > Android' 카테고리의 다른 글
[Android] memory heap, out of memory (0) | 2011.03.07 |
---|---|
[Android] BitmapFactory.decodeStream null 버그 (0) | 2011.03.03 |
[Android] CustomView 만들기 (0) | 2011.02.15 |
[Android] 파일을 bitmap으로 만들지않고 width와 height값 가져오기 (0) | 2011.01.28 |
[Android] Screen Size (0) | 2011.01.26 |