안녕하세요
안드로이드 스튜디오[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 ;
}
여기까지 비트맵 <-> 바이트 변환 방법에 대해서 알아봤습니다
이 글이 안드로이드 스튜디오 개발에 있어서 도움이 되셨으면 좋겠습니다