Java 将BLOB图像转换为位图并在ImageView中显示

Java 将BLOB图像转换为位图并在ImageView中显示,java,android,blob,Java,Android,Blob,我一直在寻找周围的时间试图让这一切,我不能得到位图显示。我有一个使用id调用的web服务,它返回一个BLOB图像,我将其存储在字符串(img)中 当我将字符串img输出到textview时,它包含的结果似乎是有效的,因此我非常确定上面的代码工作正常。问题是将该字符串转换为位图。我尝试了很多方法,但从我所能找到的来看,这似乎是公认的最好的方法 byte[] decodedString = Base64.decode(img, Base64.DEFAULT); bm = BitmapFactory.

我一直在寻找周围的时间试图让这一切,我不能得到位图显示。我有一个使用id调用的web服务,它返回一个BLOB图像,我将其存储在字符串(img)中

当我将字符串img输出到textview时,它包含的结果似乎是有效的,因此我非常确定上面的代码工作正常。问题是将该字符串转换为位图。我尝试了很多方法,但从我所能找到的来看,这似乎是公认的最好的方法

byte[] decodedString = Base64.decode(img, Base64.DEFAULT);
bm = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
ImageView imgbox = (ImageView)findViewById(R.id.imagebox);
imgbox.setImageBitmap(bm);

这对我不起作用。对于我尝试过的大多数方法,它只会显示任何内容,但对于这个特定的方法,它会导致应用程序在加载时崩溃(即使我有一个try/catch)。

似乎我太过复杂了。这工作非常完美,也非常简单

URL imgurl = new URL("http:mysite?GETBLOB&__blobRef=1&USER_ID="+ID);
InputStream picin = imgurl.openStream();
Bitmap avatar = BitmapFactory.decodeStream(picin);
imgbox.setImageBitmap(avatar);

看来我把事情搞得太复杂了。这工作非常完美,也非常简单

URL imgurl = new URL("http:mysite?GETBLOB&__blobRef=1&USER_ID="+ID);
InputStream picin = imgurl.openStream();
Bitmap avatar = BitmapFactory.decodeStream(picin);
imgbox.setImageBitmap(avatar);

如果imgBlob类型。您可以从中获取字节[]

byte[] imgByte = img.getBlob();
Bitmap bmp = BitmapFactory.decodeByteArray(imgByte,0,imgByte.length);
imgbox.setImageBitmap(bmp);

如果imgBlob类型。您可以从中获取字节[]

byte[] imgByte = img.getBlob();
Bitmap bmp = BitmapFactory.decodeByteArray(imgByte,0,imgByte.length);
imgbox.setImageBitmap(bmp);

检查base64输入。它可能会使用不同的标志(可能没有换行符)检查base64字符串,以查看它是否拆分为80个字符行。另外,请定义“不工作”和post stacktrace。如果应用程序崩溃,将堆栈跟踪添加到您的帖子中会很有用。请检查您的base64输入。它可能会使用不同的标志(可能没有换行符)检查base64字符串,以查看它是否拆分为80个字符行。另外,请定义“不工作”和post stacktrace。如果应用程序崩溃,将堆栈跟踪添加到您的帖子中会很有用。