Отображение изображения из базы данных sqlite с помощью курсора в Android - PullRequest
14 голосов
/ 03 декабря 2010

Я хочу отобразить изображение в imageview из базы данных 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); 

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

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

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

Ответы [ 3 ]

18 голосов
/ 13 июня 2011

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

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

Вот мое утверждение "создать таблицу", пожалуйста, проверьте ваш

    create table datatable(_id INTEGER PRIMARY KEY AUTOINCREMENT, image BLOB, price INTEGER);
1 голос
/ 16 июня 2011

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

 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 голос
/ 14 июня 2011

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

   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);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...