Вопрос: Отображение изображения из базы данных 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); 

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

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

Заранее спасибо..


14


источник


Ответы:


Я попытался использовать 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);

18



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

   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);
    }

1



Прежде всего, пожалуйста, не храните изображения в базе данных, потому что 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());   

Я надеюсь, что это поможет вам.


1



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