loading

프로그래밍/안드로이드

[Android Studio] 비트맵(Bitmap) <-> 바이트(Byte) 변환 방법

침착곰 2021. 4. 27. 13:27
반응형

안녕하세요

안드로이드 스튜디오[Android Studio] 프로젝트를 하는 중에 갤러리의 이미지를 비트맵으로 받아서 ImageView에 보여주고 서버에 전송하는 프로그램을 짜게 되었습니다

서버에 전송하기 위해서는 바이트 형식으로 전환을 해야했습니다

 

이번 글에서는 비트맵(Bitmap)을 바이트배열(Byte[])로 변환하고 반대로 바이트배열(Byte[])을 비트맵(Bitmap)으로 변환하는 방법에 대해서 알아보겠습니다

 

비트맵(Bitmap)에서 바이트(Byte) 변환

1. ByteArraryOutputStream을 선언하여 바이트형식으로 출력값을 받는 변수를 선언합니다

2. compress를 통해 이미지를 압축하여 Byte형태로 변환합니다

 - Bitmap.CompressFormat.JPEG : 압출된 이미지의 형식

 - 100 : 품질값이 높을수록 최대화질 압축

 - stream : 압축된 데이터를 쓰는 출력 stream

3. byte배열에 압축된 이미지값을 넣어줍니다

여기까지 아래의 소스에 대한 설명이었습니다

// Bitmap을 Byte로 변환
public byte[] bitmapToByteArray( Bitmap bitmap ) {
    ByteArrayOutputStream stream = new ByteArrayOutputStream() ;
    bitmap.compress( Bitmap.CompressFormat.JPEG, 100, stream) ;
    byte[] byteArray = stream.toByteArray() ;
    return byteArray ;
}

이어서 바이트에서 비트맵으로 변환하는 방법에 대해서 알아보겠습니다

 


바이트(Byte)에서 비트맵(Bitmap) 변환

1. 바이트로 받은 데이터를 BitmapFactory의 바이트디코딩을 통해서 Bitmap으로 전환합니다

 byteArray : 압축된 이미지의 바이트배열입니다

 0 : 구분 문석을 시작할 위치(당연히 0번부터 시작합니다)

 byteArray.length : 분석할 구문의 길이

// Byte를 Bitmap으로 변환
public Bitmap byteArrayToBitmap( byte[] byteArray ) {
    Bitmap bitmap = BitmapFactory.decodeByteArray( byteArray, 0, byteArray.length ) ;
    return bitmap ;
}

 

여기까지 비트맵 <-> 바이트 변환 방법에 대해서 알아봤습니다

이 글이 안드로이드 스튜디오 개발에 있어서 도움이 되셨으면 좋겠습니다

반응형
그리드형