program tip

Android에서 base64 문자열로 비트 맵 객체 인코딩 및 디코딩

radiobox 2020. 11. 19. 08:01
반응형

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);

참고 URL : https://stackoverflow.com/questions/9768611/encode-and-decode-bitmap-object-in-base64-string-in-android

반응형