将位图转换为字节数组再转换回位图在 Android 中始终为 null
Converting bitmap to bytearray to string then convert back to bitmap is always null in Android
我正在开发 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。我的代码有什么问题?将字节数组转换为字符串然后将该字符串转换回字节数组的正确方法是什么。我的代码中缺少什么?
要将 byte[]
正确转换为 String
,您应该使用 Base64.encodeToString()
。
我正在开发 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。我的代码有什么问题?将字节数组转换为字符串然后将该字符串转换回字节数组的正确方法是什么。我的代码中缺少什么?
要将 byte[]
正确转换为 String
,您应该使用 Base64.encodeToString()
。