A
Antdoit
Neues Mitglied
- 1
Mein aktueller Versuch, das Canvas einer SurfaceView als Bild lokal auf dem Handy zu speichern sieht so aus:
Wie ihr seht logge ich eigentlich alle Entscheidungen und Ereignisse mit. Wenn ich in meiner App auf den "Bild speichern" Button im Optionsmenü klicke, wird im Logcat keine Meldung angezeigt (bedeutet eigentlich, dass der Pfad vorhanden war und dass es keinen Fehler beim Speichern des FileOutputStreams gab). Leider finde ich dann im Windows Explorer auf dem Handy keine Datei die "AdelPath_RenderResult.png" heißt. Was mache ich hier falsch?
Vielleicht noch kurz zur Erklärung des Codes:
ich hol mir erstmal das aktuelle Canvas mit "lockCanvas()" damit ich die Bitmap mit der passenden Größe erstelle. Danach erstelle ich ein Canvas mit der Bitmap.
ist die Renderer Klasse, mit
weise ich dem Renderer das zuvor erstellte Canvas zu. Danach weiße ich mit
dem zuvor erstellten canvas das Ergebnis des Renderers zu.
Habt ihr da noch Ideen, was ich falsch mache?
Code:
public void saveImage(){
Canvas canv = this.dView.getHolder().lockCanvas();
Bitmap bitmap = Bitmap.createBitmap(canv.getWidth(), canv.getHeight(), Bitmap.Config.ARGB_8888);
this.dView.getHolder().unlockCanvasAndPost(canv);
Canvas canvas = new Canvas(bitmap);
canvas.setBitmap(bitmap);
this.rend.canvas = canvas;
canvas = this.rend.DisplayResult();
//this.dView.draw(canvas);
try{
File mediaStorageDir = new File(Environment.getExternalStorageDirectory() + "/Android/data" + getApplicationContext().getPackageName() + "/files");
if(!mediaStorageDir.exists())
Log.e("MKDIRS---->", String.valueOf(mediaStorageDir.mkdirs()));
File mediaFile = new File(mediaStorageDir.getPath() + File.separator + "AdelPath_RenderResult.png");
FileOutputStream fos = new FileOutputStream(mediaFile);
bitmap.compress(Bitmap.CompressFormat.PNG, 90, fos);
fos.close();
} catch(Exception e){
Log.e("Error --->", e.toString());
}
}
Wie ihr seht logge ich eigentlich alle Entscheidungen und Ereignisse mit. Wenn ich in meiner App auf den "Bild speichern" Button im Optionsmenü klicke, wird im Logcat keine Meldung angezeigt (bedeutet eigentlich, dass der Pfad vorhanden war und dass es keinen Fehler beim Speichern des FileOutputStreams gab). Leider finde ich dann im Windows Explorer auf dem Handy keine Datei die "AdelPath_RenderResult.png" heißt. Was mache ich hier falsch?
Vielleicht noch kurz zur Erklärung des Codes:
ich hol mir erstmal das aktuelle Canvas mit "lockCanvas()" damit ich die Bitmap mit der passenden Größe erstelle. Danach erstelle ich ein Canvas mit der Bitmap.
Code:
this.rend
Code:
this.rend.canvas
Code:
canvas = this.rend.DisplayResult()
Habt ihr da noch Ideen, was ich falsch mache?