Java 将字节转换为位图

Java 将字节转换为位图,java,android,byte,Java,Android,Byte,我必须将字节转换为位图,并将其设置为imageview 我有一种方法可以将ImageView中的位图转换成字节,然后插入 public static byte[] ConvertDrawableToByteArray(Drawable drawableResource) { Bitmap imageBitmap = ((BitmapDrawable) drawableResource).getBitmap(); ByteArrayOutputS

我必须将字节转换为位图,并将其设置为imageview

我有一种方法可以将ImageView中的位图转换成字节,然后插入

public static byte[] ConvertDrawableToByteArray(Drawable drawableResource) {

             Bitmap imageBitmap = ((BitmapDrawable) drawableResource).getBitmap();
            ByteArrayOutputStream imageByteStream = new ByteArrayOutputStream();
            imageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, imageByteStream);
            byte[] imageByteData = imageByteStream.toByteArray();
            return imageByteData;

}
当我想从数据库中检索图像并在ImageView中显示它时,我会这样做

 //--
             byte[] image_b   = c.getBlob(4);
             Bitmap b = BitmapFactory.decodeByteArray(image_b, 0, image_b.length);
             img.setImageBitmap(b);
但它一无所获

怎么了,请帮忙


非常感谢

我想这是因为光标没有返回任何内容。可能Blob太大,无法一次查询,因为android游标限制为每次查询1 mb。请再次检查stacktrace/logcat,如果Blob大小存在问题,您可以尝试将字节拆分为较小的大小,并将其存储在数据库中。

您可以使用以下方法,并让我们知道它是否有效:

String[] filePathColumn = { MediaStore.Images.Media.DATA };
        Cursor cursor = resolver.query(imageUri, filePathColumn, null, null, null);
        cursor.moveToFirst();
        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        String picturePath = cursor.getString(columnIndex);
        cursor.close();
        return BitmapFactory.decodeFile(picturePath);

我不明白问题在哪里,我确实喜欢这个:String t=image_b.toString();System.out.println(“它给了我什么”+t);我在logcat中找到这一行:03-19 17:01:28.167:i/System.out(1019):它给了我什么[B@41f1f5c0


这意味着它返回了一些东西但没有显示,还是字节
[B@41f1f5c0
不正确

您是否尝试使用调试器单步执行代码?请在尝试获取blobi时发布stacktrace/logcat在logcat中,我不理解`打开跟踪文件时出错:没有这样的文件或目录(2)跳过101帧!应用程序可能在其主线程上做了太多工作。正在跳过包表0中的条目0x7f020002,因为它并不复杂!GREF已增加到201 SkImageDecoder::Factory返回null跳过了40帧!应用程序可能在其主线程上做了太多工作。GC_并发释放1814K,7%释放26919K/28860K,暂停95ms+25ms,总计237ms等待并发GC阻塞143ms 03-19 16:23:05.556:D/skia(948):--SkImageDecoder::Factory返回null`是的,我认为您无法获取字节[],您是否尝试记录映像?您可以通过将映像转换为字符串()来完成此操作要检查映像是否真的有任何数据,我必须重新启动Eclipse并尝试记录映像,我必须添加映像。toString();好的,我非常喜欢:
String t=image\u b.toString();System.out.println(“它给了我什么”+t)
,我在logcat中找到这一行:
03-19 17:01:28.167:i/System.out(1019):它给了我什么[B@41f1f5c0
啊,很抱歉,我忘了这是一个字节数组。请用image_b length记录字节的长度