Hallo,
Fotos kann ich über meine APP erstellen, lege diese in der Gallery ab, erstelle die byte[] Variante und speichere in eine SQLite-Tabelle.
Leider habe ich aber Probleme diese Fotos später wieder zu laden.
In der Tabelle stehen der Dateiname und die Byte-Form des Bildes (BLOB). Leider gelingt mir nicht die Anzeige aus der Datenbank.
Das erstellte Bitmap ist stets leer bzw. 0.
Irgendwas fehlt oder mache ich falsch. Kann jemand helfen ?
Code
// die Ablage in die Datenbank
// jetzt für die DB -------- Bitmap muss in byte gewandelt werden ---------------
File storeDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmm", Locale.getDefault()).format(new Date());
filename = "Task_X_" +timeStamp + ".jpg";
imageFile = new File(storeDir,filename);
....
FileInputStream fis = new FileInputStream(imageFile);
byte[] byteImage= new byte[fis.available()];
fis.read(byteImage);
// Foto abspeichern --------
sSQL = "INSERT INTO photo_table (name,image) VALUES ( '"+filename+"', '"+stream+"' ) ;";
c = myDB.doSQL(sSQL);
Alles anzeigen
Der Inhalt von "image" (BLOB) sieht dann z.B. so aus : [B@8180772
Das Auslesen geschieht wie folgt:
Code
sSQL = "SELECT image FROM photo_table WHERE _id = "+picID+" ;";
Cursor c1 = myDB.doSQL(sSQL);
c1.moveToFirst();
bild = c1.getBlob(0); // das bild als byte Array
bitmap = BitmapFactory.decodeByteArray(bild,0, bild.length); // ergibt ein leeres Bitmap ???
.....
// in der Recyclerview nach Übergabe der bitmap
holder.bmp_image.setImageBitmap(dataModell_TaskList.get(position).getBMPFoto());