将 imageview 转换为 base64 并将其存储到 mysql 以及如何在 Android 中对其进行解码

Converting imageview to base64 and storing it into mysql and how to decode it in Android

我已经使用 base64 对图像视图进行了编码,并将该值传递给隐藏的文本视图,因为我已成功插入到数据库中。我的编码代码:

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 数据库中得到的内容。这是正确的吗? 我的问题是如何解码它以及 see/view 它在哪里?

因为它被标记了 Android 我假设你指的是 sqlite?

不是您问题的直接答案,但在 sqlite 中,您可以存储二进制 blob,而无需先转换为 base64。由于转换 to/from base64 是有成本的。

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

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

希望对您有所帮助!!

您的图像编码看起来正确。要将编码字符串解码回图像,您需要实现 BitmapFactory.

首先从编码字符串中获取字节。然后使用 BitmapFactory 解码字节数组。 BitmapFactory.decodeByteArray returns 您可以在 imageView 中使用的位图。

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