0

我必须将一个字节转换为位图并将其设置为 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);

但它什么也没返回

有什么问题,请帮忙

非常感谢

4

3 回答 3

1

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

于 2013-03-19T16:25:24.333 回答
0

您可以尝试以下方法并让我们知道它是否有效:

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);
于 2013-03-19T16:26:51.493 回答
0

我不明白我喜欢这个的问题在哪里:String t = image_b.toString(); System.out.println("它给了我什么" +t); 我在 logcat 中找到了这一行:03-19 17:01:28.167: I/System.out(1019): what it give me[B@41f1f5c0

这是否意味着它返回了一些东西但不显示或者字节[B@41f1f5c0不正确

于 2013-03-19T18:25:26.137 回答