【问题标题】:Android: Image loaded from binary data in DB will not displayAndroid:从数据库中的二进制数据加载的图像不会显示
【发布时间】:2018-04-18 04:37:22
【问题描述】:

我正在开发一个应用程序,用户可以在其中上传图片作为简短博客文章的一部分;然后此图像经过 base64 编码并存储在 MS SQL Server 数据库中。当我稍后尝试查看图像时,它不会显示。我在ImageView 中有一个占位符,当要加载图像但实际上没有图像显示时它会消失。

编码图像:

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
img.compress(Bitmap.CompressFormat.JPEG, 35, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream.toByteArray();
String image = Base64.encodeToString(byteArray, Base64.DEFAULT);

解码图片并放入ImageView

byte[] decodeString = Base64.decode(blog.getImage(), Base64.DEFAULT);
Bitmap decodebitmap = BitmapFactory.decodeByteArray(decodeString, 0, decodeString.length);
image1.setImageBitmap(decodebitmap);

非常感谢任何关于我哪里出错的帮助。

【问题讨论】:

  • this image is then encoded to binary data ??那会是什么?
  • @greenapps 编码为 Base64
  • 所以你是调用base64字符串二进制数据?很奇怪。我想说的是更多的文字。
  • @greenapps 据我了解,base64 字符串代表二进制图像数据,因此我的措辞 :)
  • 错了。你应该改为this image is then base64 encoded

标签: java android sql-server image base64


【解决方案1】:

使用此函数从base64获取Bitmap

public static Bitmap decodeBase64(String input)
    {
        byte[] decodedBytes = Base64.decode(input, 0);
        return BitmapFactory.decodeByteArray(decodedBytes, 0, decodedBytes.length);
    }

这个函数会将上面的位图设置为ImageView

private void setImage(ImageView iv,Bitmap bitmap)
{
    iv.setImageBitmap(bitmap);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 2012-12-28
    • 1970-01-01
    • 2019-12-20
    相关资源
    最近更新 更多