Hi Leute,
hab en Problem beim Speichern eines Bildes. Ich zeichne in der View auf einem Canvas. Beim speichern wird der Drawingcache zurückgegeben. Wenn ich also was in den Canvas gemalt habe und speichere funzt alles einwandfrei beim Speichern. Wenn ich nach dem speichern aber noch was im Canvas dazumale und nochmal speichern will gibt er mir nur das Bild von vorher aus, ohne die letzten Änderungen... woran kann das liegen? -> siehe Zeile 10-11
Java
public void saveAsBitmap() {
isFileAlreadySaved = true;
//Holt aktuelles Datum und schreibt es in einen String der weiter unten an Dateinamen drankommt
Calendar currentDate = Calendar.getInstance();
SimpleDateFormat formatter= new SimpleDateFormat("yyyyMMMddHmmss");
String dateNow = formatter.format(currentDate.getTime());
//Holt aktuellen DrawingCache (alles was bis jetzt gemalt wurde) und speichert ihn ins Bitmap
Bitmap bitmap = drawView.getDrawingCache();
//Fragt den Systempfad ab und erstellt den Appordner
String root = Environment.getExternalStorageDirectory().toString();
File myDir = null;
//Prüft ob das Bild normal gespeichert wurde oder ob es geteilt werden soll
if(isFileToShare) {
myDir = new File(root + "/PhotoshApp/Share");
}
else {
myDir = new File(root + "/PhotoshApp");
}
myDir.mkdirs();
String fname = "photoshapp_"+ dateNow + ".jpg";
actualFileName = root + "/PhotoshApp/Share/" + fname; //Speichert aktuellen Pfad inkl. Dateinamen als String (fürs Teilen benötigt)
File file = new File (myDir, fname);
if (file.exists ()) file.delete ();
try {
FileOutputStream out = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); //Bild wird als JPEG mit Qualität 90 gespeichert
//Feedback um User zu informieren was passiert
Toast.makeText(getApplicationContext(), "Image saved!",Toast.LENGTH_SHORT).show();
out.flush();
out.close();
} catch (Exception e) {
//Feedback um User zu informieren was passiert - Gibt Exception im Toast aus
Toast.makeText(getApplicationContext(), e.toString(),Toast.LENGTH_SHORT).show();
}
}
Alles anzeigen