Подтвердить что ты не робот

Отображение изображения из базы данных sqlite с использованием курсора в android

Я хочу отображать изображение в представлении изображения из базы данных sqlite с помощью курсора. Я использовал ниже код для извлечения изображения, но я не могу отображать изображение в представлении изображения.

Cursor c=this.db.query(TABLE_NAME, new String[] { "name","price","image" },
                null, null, null, null, null);
name.setText(c.getString(0));
price.setText(c.getString(1));
byte b[]=c.getBlob(2);
Bitmap bp=BitmapFactory.decodeByteArray(b, 0, b.length);
ImageView image=(ImageView)findViewById(R.id.ImageView);
//ByteArrayInputStream imageStream = new ByteArrayInputStream(b);               
//Bitmap theImage = BitmapFactory.decodeStream(imageStream);
//image.setImageBitmap(theImage);               
image.setImageBitmap(bp); 

кроме изображения, имени и цены будет отображаться, но изображение не будет отображаться. любое предложение или код, которые помогут мне решить эту проблему.

Пожалуйста, помогите мне.

Спасибо заранее.

4b9b3361

Ответ 1

Я попытался использовать Stream вместо байтового массива, мой пример просто работает для меня. Также попробуйте использовать Cursor.getColumnIndex()

    byte[] blob = c.getBlob(c.getColumnIndex(YourDB.IMAGE));
    ByteArrayInputStream inputStream = new ByteArrayInputStream(blob);
    Bitmap bitmap = BitmapFactory.decodeStream(inputStream);

Здесь мой оператор "create table", pls double check yours

    create table datatable(_id INTEGER PRIMARY KEY AUTOINCREMENT, image BLOB, price INTEGER);

Ответ 2

попробуйте это объект курсора;//курсор

   mImageView.setImageBitmap(getImageFromBLOB(object.getBlob(object.getColumnIndex("book_thumb"))));

    public static Bitmap getImageFromBLOB(byte[] mBlob)
    {
        byte[] bb = mBlob;
        return BitmapFactory.decodeByteArray(bb, 0, bb.length);
    }

Ответ 3

Прежде всего, пожалуйста, не сохраняйте изображения в базе данных, потому что sqlite не будет поддерживать более 1 мб, я могу ошибаться, изображения должны храниться в активах или папке с прокруткой, а имя изображений должно храниться в базе данных, тогда вы может получить его от имени до преобразования ресурсов по коду

 String videoFileName= c.getString(c.getColumnIndex(TB_SETTING_VIDEOFILENAME));
        int dot = videoFileName.lastIndexOf(".");
        videoFileName=videoFileName.substring(0,dot);
        Log.d("VIDEOFILENAME", videoFileName);

        int videoFileRId = getResources().getIdentifier(videoFileName , "raw", getPackageName());   

Надеюсь, это поможет вам.

Ответ 4

Я хочу показать изображение BLOB-объекта из базы данных с помощью курсора. Но, к счастью, это не работает. Кто-нибудь может мне помочь, пожалуйста

        byte[] blob = cursor.getBlob(cursor.getColumnIndex("product_image" ));
      ByteArrayInputStream inputStream = new ByteArrayInputStream(blob);/            
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);



        byte[] image = cursor.getBlob(8);
        Bitmap bitmap = BitmapFactory.decodeByteArray(image, 0,image.length);
        ImageView.setImageBitmap(bitmap);
        Toast.makeText(this,"select success", Toast.LENGTH_SHORT).show();

        productArrayList.add(product);
    }