将imageview转换为base64并存储到mysql中,以及如何在android中解码

oymdgrw7  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(649)

我使用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数据库中得到的。对吗?

我的问题是如何解码以及在哪里看到/查看它?

fivyi3re

fivyi3re1#

你必须实施 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);

希望对你有帮助!!

xcitsw88

xcitsw882#

既然这个被标记为android,我猜你指的是sqlite?
这不是对您的问题的直接回答,但在sqlite中,您可以存储二进制blob,而无需首先转换为base64。在您的情况下,它可能会更有效,因为转换到base64或从base64转换需要成本。
https://www.sqlite.org/datatype3.html

pbwdgjma

pbwdgjma3#

你的图像编码看起来不错。要将编码字符串解码回图像,您需要实现 BitmapFactory .
首先从编码字符串中获取字节。然后使用bitmapfactory对字节数组进行解码。 BitmapFactory.decodeByteArray 返回可以在imageview中使用的位图。

byte[] b = Base64.decode(encodedString,Base64.DEFAULT);
Bitmap bitmap = BitmapFactory.decodeByteArray(b,0,b.length);
imageView.setImageBitmap(bitmap);

相关问题