2010-11-16 4 views
8

Wie kann ich ein Byte-Array (Bilddaten) von und zu einer SQLite-Datenbank in Android speichern und abrufen?Wie speichert und ruft man ein Byte-Array (Bilddaten) zu und von einer SQLite-Datenbank ab?

+3

Wenn nichts Besonderes unternommen wird dann DB in der internen Gerätespeicher gespeichert wird. So erhalten Sie ca. 30-60 MB freien Speicherplatz für Ihre DB. Wenn Sie viele Bilder normaler Größe (mehrere Mpixel) speichern möchten, sollten Sie Bilder auf SD-Karte als Dateien speichern und einen Zeichenfolgen-Dateipfad in Ihre Datenbank einfügen. –

Antwort

12

Byte-Array kann als BLOB-Datentyp gespeichert werden. Es gibt nichts besondere in diesem Verfahren mit Ausnahme besonderer Sorgfalt für Chunking, wie:

InputStream is = context.getResources().open(R.drawable.MyImageFile); 
try { 
    byte[] buffer = new byte[CHUNK_SIZE]; 
    int size = CHUNK_SIZE; 
    while(size == CHUNK_SIZE) { 
     size = is.read(buffer); //read chunks from file 
     if (size == -1) break; 

     ContentValues cv = new ContentValues(); 
     cv.put(CHUNK, buffer);  //CHUNK blob type field of your table 

     long rawId = database.insert(TABLE, null, cv); //TABLE table name 
    } 
} catch (Exception e) { 
    Log.e(TAG, "Error saving raw image to: "+rawId, e); 
} 
+0

können Sie bitte etwas mehr Code dafür ?? –

+0

@gevorg Warum wird Chunking benötigt? – SadeepDarshana

+0

@barmaley Sind die Chunks alle in einem einzelnen Blob in einem einzigen Datensatz (das heißt, erhalten Sie einen letzten Blob, der das gesamte Bild enthält) oder werden mehrere Datensätze pro Chunk erstellt? (wie in diesem Code) – SadeepDarshana

Verwandte Themen