decode方法返回null



我使用这段代码来获取放置在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);
}

我在插入和检索之前记录了字节数组,它们都返回相同的值。哪里出了问题?

原来我只是将流的内存引用保存到SQLite。使用ContentValue将字节数组插入到sqlite中就达到了目的。

最新更新