반응형
Android에서 base64 문자열로 비트 맵 객체 인코딩 및 디코딩
Bitmap
문자열로 개체 를 인코딩하고 디코딩하고 싶습니다 base64
. Android API10을 사용합니다.
이 형식의 메서드를 사용하여 Bitmap
.
public static String encodeTobase64(Bitmap image) {
Bitmap immagex=image;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
immagex.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
String imageEncoded = Base64.encodeToString(b,Base64.DEFAULT);
Log.e("LOOK", imageEncoded);
return imageEncoded;
}
public static String encodeToBase64(Bitmap image, Bitmap.CompressFormat compressFormat, int quality)
{
ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream();
image.compress(compressFormat, quality, byteArrayOS);
return Base64.encodeToString(byteArrayOS.toByteArray(), Base64.DEFAULT);
}
public static Bitmap decodeBase64(String input)
{
byte[] decodedBytes = Base64.decode(input, 0);
return BitmapFactory.decodeByteArray(decodedBytes, 0, decodedBytes.length);
}
사용 예 :
String myBase64Image = encodeToBase64(myBitmap, Bitmap.CompressFormat.JPEG, 100);
Bitmap myBitmapAgain = decodeBase64(myBase64Image);
이것이 당신을 도울 수 있기를 바랍니다
Bitmap bitmap = BitmapFactory.decodeStream(this.getContentResolver().openInputStream(uri));
(비트 맵을 구성하기 위해 URI를 참조하는 경우) 또는
Resources resources = this.getResources();
Bitmap bitmap= BitmapFactory.decodeResource(resources , R.drawable.logo);
(비트 맵을 구성하기 위해 드로어 블을 참조하는 경우)
그런 다음 인코딩
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] image = stream.toByteArray();
String encodedImage = Base64.encode(image, Base64.DEFAULT);
디코딩 로직은 인코딩과 정확히 반대입니다.
byte[] decodedString = Base64.decode(encodedImage, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
Bimap을 이미지로 인코딩하려면 :
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 80, byteArrayOutputStream);
byte[] imageBytes = byteArrayOutputStream.toByteArray();
String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
Log.d("bytearray", String.valueOf(byteArrayOutputStream.toByteArray()));
Log.d("encodedimage",encodedImage);
반응형
'program tip' 카테고리의 다른 글
Android : 파일 생성 날짜를 얻는 방법은 무엇입니까? (0) | 2020.11.19 |
---|---|
Android : GridView에서 강조 표시 비활성화 (0) | 2020.11.19 |
Javascript, Google지도 마커 색상 변경 (0) | 2020.11.19 |
Ruby에서 integer-for-loop를 만드는 방법은 무엇입니까? (0) | 2020.11.19 |
homebrew로 이전 버전의 mongodb를 설치하는 방법은 무엇입니까? (0) | 2020.11.19 |