将位图转换为bytearray为string然后转换回位图在Android

时间:2016-06-22 14:46:30

标签: android arrays bitmap byte

我正在开发一款Android应用。在我的应用程序中,我正在使用位图。我正在做的是我正在将位图转换为字节数组。然后我将字节数组转换为字符串。我需要做一些原因。将位图转换为字节数组正在工作。字节数组也转换为字符串。然后当我使用转换后的字符串时问题开始了。我正在将该字符串转换回字节数组。然后我将该字节数组转换回位图。但位图始终为空。请参阅下面的代码。

这是我将函数转换为字节数组的函数

public static byte[] ConvertBitmapToByteArray(Bitmap bitmap)
    {
        if(bitmap==null)
        {
            return null;
        }
        else{
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
            byte[] byteArray = stream.toByteArray();

            return byteArray;
        }
}

这是将字节数组转换为位图

的函数
 public static Bitmap ConvertByteArarysToBitmap(byte[] byteArray)
    {
        if(byteArray!=null)
        {
            return BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
        }
        else{
            return null;
        }
}

这些是我转换的步骤

byte[] byteArray = Helper.ConvertBitmapToByteArray(Bitmap bitmap);
//convert byte array to string
String imageString = new String(byteArray,"UTF-8");
//I convert that string back to byte array
byte[] reconvertedByteArray = imageString.getBytes("UTF-8");
Bitmap reconvertedBitmap = Helper.ConvertByteArarysToBitmap(reconvertedByteArray);

在我的代码中,最后一个reconvertedBitmap始终为null。我的代码出了什么问题?将字节数组转换为字符串然后将该字符串转换回字节数组的正确方法是什么。我的代码中缺少什么?

1 个答案:

答案 0 :(得分:2)

要将byte[]正确转换为String,您应该使用Base64.encodeToString()

Documentation