Метод BitmapFactory.decode, возвращающий ноль - PullRequest
0 голосов
/ 05 мая 2011

Я использую этот код для размещения растрового изображения внутри ImageView]

    private Bitmap getBitmap(ImageView imageView) {
          imageView.setDrawingCacheEnabled(true);

          imageView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
                                MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
          imageView.layout(0, 0, imageView.getMeasuredWidth(), imageView.getMeasuredHeight()); 

          imageView.buildDrawingCache(true);
          Bitmap b = Bitmap.createBitmap(imageView.getDrawingCache());
              imageView.setDrawingCacheEnabled(false);
                    return b;
                }});

и этот код для сохранения его в базе данных в виде байтового массива

 public byte[] convertToBytes(Bitmap image) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    image.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    byte[] imageBytes = baos.toByteArray();
    Log.d("IMAGE BYTE IS ", imageBytes.toString());
    return imageBytes;
}

При декодировании изображения с помощью этого кода для повторного отображения возвращается null

 public Bitmap convertToImage(byte[] bytes) {

    ByteArrayInputStream imageStream = new ByteArrayInputStream(bytes);
    return BitmapFactory.decodeStream(imageStream);
}

Я записал байтовый массив перед вставкой и после извлечения, и они оба возвращают одинаковые значения.Где это пошло не так?

1 Ответ

0 голосов
/ 10 мая 2011

Оказывается, я только сохранял ссылку на память потока на SQLite.Использование ContentValue для вставки байтового массива в sqlite сделало свое дело.

...