Android:将图像从相机存储到数据库并显示它

时间:2010-10-21 16:19:09

标签: android

这里我在db上写了相机快照。

 `private SQLiteDatabase db;
// SOME CODE HERE ///
InputStream is =new ByteArrayInputStream(data);
BufferedInputStream bis = new BufferedInputStream(is,128);
ByteArrayBuffer baf = new ByteArrayBuffer(128);
int current = 0;
while ((current = bis.read()) != -1) {
     baf.append((byte) current);
}
baf.toByteArray();
ContentValues initialValues = new ContentValues();
initialValues.put("mapimg", baf.toByteArray();
db.insert(DATABASE_TABLE, null, initialValues);

` 这会在db中正确写入一个新行。

当我尝试显示图像时:

DbUtil db = new DbUtil(this);
List<Row> rows = db.fetchAllRows();
db.close();
byte[] imageByteArray= rows.get(10).getMapimg();
ByteArrayInputStream imageStream = new ByteArrayInputStream(imageByteArray);
Bitmap theImage = BitmapFactory.decodeStream(imageStream);
ImageView imageView ;
imageView = (ImageView)findViewById(R.id.ImageView01);
imageView.setImageBitmap(theImage);

在xml中:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"

    >


   <ImageView
         android:id="@+id/ImageView01"
        android:layout_width="300px"
        android:layout_height="300px"
        android:scaleType="center"
         />



</LinearLayout>

但屏幕上没有图像。 问题出在哪儿 ?

1 个答案:

答案 0 :(得分:0)

可能是事物的数量。这样做:

  1. 检查日志中的错误。
  2. 检查您从数据库中获取的数据是否相同。检查大小。使用insertOrThrow()而不是insert()。
  3. 检查BitmapFactory.decodeStream(..)是否不返回null。