我将basemap编码为字符串,以便将其作为JSON对象的一部分发送。图像的接收者将获得该字符串并再次将其转换为图像。
如果这完全相关,我就是为Android应用做这个。
将位图转换为字符串似乎工作正常,但在将字符串转换回位图时,我得到的是NullPointerException。
我试图将其归结为基础知识(并转换为字符串并返回到相同方法中的位图进行测试),所以我有以下内容:
public static void convertBitmapToBase64String(Context context, String filename, int maxStringSize)
{
Bitmap originalBmp = PicUtils.getBitmapFromFilename(filename, null, -1);
String base64Image = PicUtils.convertBitmapToBase64StringFromFile(context, TEMP_FILENAME);
// The encoded string is not null, so encoding seems to work.
DataUtils.log("base64Image length is " + base64Image.length());
// Test if we can convert back
final byte[] decodedString = Base64.decode(base64Image, Base64.DEFAULT);
// This returns null! Is failing here.
Bitmap decodedByteBitmap = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
}
public static Bitmap getBitmapFromFilename(String filename)
{
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(filename, options);
Bitmap finalBitmap = BitmapFactory.decodeFile(filename);
return finalBitmap;
}
public static String convertBitmapToBase64StringFromFile(Context context, String filename)
{
try {
FileInputStream fis = context.openFileInput(filename);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
Base64OutputStream outputStream = new Base64OutputStream(byteArrayOutputStream, Base64.DEFAULT);
IOUtils.copy(fis, outputStream);
return new String(byteArrayOutputStream.toByteArray(),"UTF-8");
} catch (Exception e) {
e.printStackTrace();
DataUtils.log(e.getMessage());
return null;
}
}
任何提示都表示赞赏!
答案 0 :(得分:0)
这是我用来解决问题的链接。我希望这对你也有用。
http://androidtrainningcenter.blogspot.in/2012/03/how-to-convert-string-to-bitmap-and.html