2014-04-15 60 views
0

我在我的activity.xml文件中有一個ImageView。我正在設置一個從服務器檢索的圖像。我想從ImageView插入這張圖片到我的Sqlite數據庫中。任何人都可以向我解釋如何去做?我在Sqlite中的表是這樣的me (fbId LONG PRIMARY KEY,fbname TEXT,fbuserid INTEGER,fbpic BLOB,ph TEXT,email TEXT)請告訴我一步一步,因爲我是數據庫的新手。
我ahve添加以下代碼,但在插入即插入一個錯誤是在SD卡和路徑SD卡的不確定如何從ImageView中檢索圖像並將其存儲在Android中的Sqlite數據庫中?

Bitmap photo = ((BitmapDrawable)v.getDrawable()).getBitmap(); 
    ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
    photo.compress(Bitmap.CompressFormat.PNG, 100, bos); 
    byte[] bArray = bos.toByteArray(); 
    Databasehandler db =new Databasehandler(this);  
    ContentValues values = new ContentValues();   
    values.put("image", bArray);    
    db.insert("image" , null, values); 
+0

你有什麼問題嗎? – pskink

+0

我不知道如何從imageview中檢索圖像並插入到db – user3256145

+0

可繪製的getDrawable() – pskink

回答

1

SQLITE數據庫不能用於直接存儲圖像文件。但是,您的選項如下:

  1. 將收到的圖像保存到SD卡。可能會創建一個單獨的文件夾,您將在其中存儲所有圖像。然後在表格結構中創建一列imagePath並將圖像的路徑保存到此列。

    渲染:在這裏,您將從數據庫中獲取相應的路徑,檢查該路徑上是否存在文件(可能已被用戶刪除),如果找到,從文件中獲取流將其寫入位圖,將它與所需的容器相關聯。

  2. 將收到的位圖轉換爲BASE64字符串。將其作爲字符串存儲到數據庫中。

    渲染:在這裏,您必須將BASE64轉換回位圖並將其關聯到所需的容器。

0

將它保存在SQLite數據庫

Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap(); 
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bitmap2.compress(Bitmap.CompressFormat.JPEG, 100,stream); 
    File file = new File(path); 
    FileOutputStream fOut = new FileOutputStream(file); 

    bitmap2.compress(Bitmap.CompressFormat.JPEG, 100, fOut); 
    fOut.flush(); 
    fOut.close(); 
3

獲取圖像視圖的位圖使用:

Bitmap photo = ((BitmapDrawable)image.getDrawable()).getBitmap(); 

創建位圖的字節數組:

ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
photo.compress(Bitmap.CompressFormat.PNG, 100, bos); 
byte[] bArray = bos.toByteArray(); 

然後你可以使用下面的方式保存表中的數據。

db = YourDBHelper.getInstance(ctx).getWritableDatabase();  
ContentValues values = new ContentValues();   
values.put("image", bArray);    
db.insert(TABLE_NAME , null, values); 
+0

請檢查我的代碼。我無法使用插入方法 – user3256145

+0

您提取的問題是什麼。請提及例外。 –

相關問題