在Android中对base64字符串中的位图对象进行编码和解码

And*_*eaF 64 base64 android bitmap

我想Bitmap在字符串中编码和解码对象base64.我使用的是Android API10,

我试过使用这种形式的方法来编码a,但没有成功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;
}
Run Code Online (Sandbox Code Playgroud)

Rom*_*uba 210

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);
}
Run Code Online (Sandbox Code Playgroud)

用法示例:

String myBase64Image = encodeToBase64(myBitmap, Bitmap.CompressFormat.JPEG, 100);
Bitmap myBitmapAgain = decodeBase64(myBase64Image);
Run Code Online (Sandbox Code Playgroud)

  • 代码说的不仅仅是文字,谢谢! (5认同)
  • 很好,谢谢 (2认同)
  • 谢谢!!这正是我所需要的,简短而甜蜜的. (2认同)

Vip*_*hah 11

希望对你有帮助

 Bitmap bitmap = BitmapFactory.decodeStream(this.getContentResolver().openInputStream(uri));
Run Code Online (Sandbox Code Playgroud)

(如果您要引用URI来构造位图)或者

Resources resources = this.getResources();
Bitmap bitmap= BitmapFactory.decodeResource(resources , R.drawable.logo);
Run Code Online (Sandbox Code Playgroud)

(如果您引用drawable来构造位图)

然后编码

 ByteArrayOutputStream stream = new ByteArrayOutputStream();  
 bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
 byte[] image = stream.toByteArray();
 String encodedImage = Base64.encode(image, Base64.DEFAULT);
Run Code Online (Sandbox Code Playgroud)

对于解码逻辑将完全颠倒编码

byte[] decodedString = Base64.decode(encodedImage, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 
Run Code Online (Sandbox Code Playgroud)