2013-07-22 34 views
-2

我將圖像作爲字節數組從一個項目存儲在sqlite數據庫中。 然後我在另一個項目中使用預先填充的表格android在sqlite中存儲blob並檢索它

但問題是,位圖工廠生成爲空。

代碼存儲圖像的:

Bitmap myLogo = BitmapFactory.decodeResource(getResources(), arr[i]); 
ByteArrayOutputStream stream1 = new ByteArrayOutputStream(); 
myLogo.compress(Bitmap.CompressFormat.JPEG, 100, stream1); 
b = stream1.toByteArray(); 

代碼檢索圖像的:

BitmapFactory.Options options = new BitmapFactory.Options(); 
decodedByte = BitmapFactory.decodeByteArray(Image, 0,Image.length, options); 
System.out.println("Image = " + Image); 
System.out.println("decodedByte = " + decodedByte); 

這裏圖像是具有長度12但位圖(decodedByte)返回的ByteArray(圖像)是返回空值。

我嘗試了很多方法,但無法找到解決方案。請幫忙!

+0

該代碼看起來不錯,你確定你正在存儲/檢索數據庫中的正確數據?長度12遠遠不足以存儲圖像,如果無法解碼數據,「BitmapFactory」將返回「null」。我想這就是發生了什麼。 – zapl

+0

@zapl:是的你說得對!之前我存儲的長度是72219.檢索後,它只有12。我能做些什麼呢? – Carbon

回答

0

這是我從功能位圖字符串

public String BitMapToString(Bitmap bitmap) { 
    try { 
     Bitmap encogida = Bitmap.createScaledBitmap(bitmap, 226, 180, true); 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     encogida.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
     byte[] b = baos.toByteArray(); 
     return org.kobjects.base64.Base64.encode(b); 
    } catch (Exception ex) { 
     Conexiones.escribirLog(Log.getStackTraceString(ex), 
       getString(R.string.versionReal)); 
     Log.e("ERROR BitMapToString ", ""); // ex.getMessage()); 
     return ""; 
    } 
} 

我希望它能幫助

+0

thanku但我在字節數組到位圖不是字符串.. – Carbon

0

你試過沒有decodeByteArray的選項參數?我認爲在這種情況下它是無用的。

無論如何,最好將圖像URI存儲爲字符串而不是sqlite數據庫中的字節數組。

要獲取URI:

 String path = Images.Media.insertImage(getContentResolver(), mylogo, 
       "title", null); 

     Uri uriMyLogo = Uri.parse(path); 

     String uriString = uriMyLogo.toString() ; 

,並從URI

   Uri uriLogo = Uri.parse(uriString); 

       Bitmap logo = null; 
       try { 
        logo = Media.getBitmap(this.getContentResolver(), uriLogo); 
       } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 

我希望它幫助,如果你想要你不能管理它獲得的圖像。

相關問題