2010-11-16 9 views
8

Jak zapisać i pobrać tablicę bajtów (dane obrazu) do iz bazy danych SQLite w systemie Android?Jak przechowywać i pobierać tablicę bajtów (dane obrazu) do iz bazy danych SQLite?

+3

Jeśli nic specjalnego nie jest podejmowane, to DB jest przechowywane w wewnętrznej pamięci urządzenia. Otrzymasz około 30-60 MB wolnej przestrzeni do wykorzystania przez DB. Jeśli planujesz przechowywać wiele obrazów o normalnym rozmiarze (kilka Mpikseli), powinieneś prawdopodobnie przechowywać obrazy na SDCard jako pliki i wstawić łańcuch znaków do pliku DB. –

Odpowiedz

12

Tablicę bajtów można zapisać jako typ danych BLOB. W tej procedurze nie ma nic szczególnego poza specjalną dbałością o porcje, takie jak:

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

Czy możesz dodać więcej kodu? –

+0

@gevorg dlaczego jest potrzebne chunking? – SadeepDarshana

+0

@barmaley Czy wszystkie porcje są dołączone do pojedynczego obiektu typu blob w jednym rekordzie (to znaczy czy otrzymujesz jeden końcowy obiekt zawierający cały obraz), czy też na jednym kawałku powstaje wiele rekordów? (jak w tym kodzie) – SadeepDarshana

Powiązane problemy