Как отобразить изображение с BLOB-данных в Android SQLite? - PullRequest
0 голосов
/ 17 мая 2011

Я пытался сохранить форму изображения Android SDCard в базе данных SQLite.И это работало нормально.Изображение сохраняется в базе данных в виде BLOB-объектов.Это грубый код, который я использовал для этого.


             Bitmap bitmap = BitmapFactory.decodeFile(filePath);
     imgView.setImageBitmap(bitmap);
     int size = bitmap.getWidth() * bitmap.getHeight();
     ByteArrayOutputStream out = new ByteArrayOutputStream(size);
     bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
     try {
     out.flush();
     out.close();
     } catch (IOException e) {
     e.printStackTrace();}
             byte[] x = out.toByteArray();

На стороне базы данных код выглядит так:

          ContentValues values = new ContentValues();
          byte[] bytes = null;
          bytes = img_bytes.getBytes();
          values.put("IMAGE", bytes);

Идля отображения я использовал код, приведенный ниже.

    ImageView image = new ImageView(this);
    byte[] img_bytes = result.get("IMAGE").getBytes();
    Bitmap bMap = BitmapFactory.decodeByteArray(img_bytes, 0, img_bytes.length);
image.setImageBitmap(bMap);

Когда я печатал строковое значение массива байтов, он становился похожим на [B @ 44da2db0.Но байтовый массив не отображается в изображении.

Кто-нибудь, пожалуйста, помогите мне с этим.Спасибо

1 Ответ

3 голосов
/ 18 мая 2011

Я нашел решение.Спасибо всем.

Я использовал метод кодирования base64.то есть;Для отображения изображения я использовал хеш-карту, чтобы получить результат в первую очередь из таблицы базы данных.Поэтому перед сохранением в карту я закодировал байты в строку, используя метод base 64.Затем на стороне Activity для отображения изображения я снова декодировал строку, используя base 64, а затем преобразовал ее в байты, и изображение было отображено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...