2010-10-21 64 views
0

在這裏,我在數據庫上寫入相機快照。Android:將圖像從相機存儲到數據庫並顯示它

`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> 

但是,沒有圖像出現在屏幕上。 問題在哪裏?

回答

0

可能是一些東西。這樣做:

  1. 檢查日誌中的錯誤。
  2. 檢查您是否從數據庫中獲得了相同的數據。檢查大小。使用insertOrThrow()而不是insert()。
  3. 檢查BitmapFactory.decodeStream(..)是否不返回空值。
+0

問題是,BitmapFactory.decodeStream(..)返回null。 – carnauser 2010-10-25 14:55:02

+0

所以數據流有問題。嘗試從數據庫中讀取數據,然後將其寫入文件並在計算機上打開。 – 2010-10-25 15:31:32

相關問題