我使用base64对imageview进行了编码,并将该值传递给textview,因为我已成功插入到db中。我编码的代码:
public void convertImg(){
imageView.buildDrawingCache();
Bitmap bm = imageView.getDrawingCache();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object
byte[] b = baos.toByteArray();
String encodedImage = Base64.encodeToString(b , Base64.DEFAULT);
base64.setText(encodedImage);
}
答案 0 :(得分:1)
你必须实现BitmapFactory.decodeByteArray()
解码你的图像base64字符串看起来这个。
//decode base64 string to image
imageBytes = Base64.decode(encodedImage , Base64.DEFAULT);
Bitmap decodedImage = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);
mage.setImageBitmap(decodedImage);
希望它能帮到你!!
答案 1 :(得分:1)
您的图片编码看起来正确。要将编码后的字符串解码回图像,您需要实现BitmapFactory
。
首先从编码的字符串中获取字节。然后使用BitmapFactory解码字节数组。 BitmapFactory.decodeByteArray
返回一个位图,然后您可以在imageView中使用它。
byte[] b = Base64.decode(encodedString,Base64.DEFAULT);
Bitmap bitmap = BitmapFactory.decodeByteArray(b,0,b.length);
imageView.setImageBitmap(bitmap);
答案 2 :(得分:0)
由于这是标记Android,我假设您指的是sqlite?
不能直接回答您的问题,但在sqlite中,您可以存储二进制blob,而无需先转换为base64。在您的情况下,它可能更有效,因为转换为/从base64转换成本。