将imageview转换为base64并将其存储到mysql中以及如何在Android

时间:2018-06-07 04:30:34

标签: android mysql decode encode

我使用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);
}

这就是我的mysql数据库中的内容。这是对的吗? enter image description here 我的问题是如何解码它以及在哪里查看/查看它?

3 个答案:

答案 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转换成本。

https://www.sqlite.org/datatype3.html