2010-11-28 23 views
0

Okay, also ich habe einen Code, die ein Bild der aktuellen Ansicht nehmen und es in eine Bitmap dreht, dann beende ich hier oben,Speicher einen BitmapDrawable oder Bitmap

Bitmap bm = view.getDrawingCache(); 
BitmapDrawable bitmapDrawable = new BitmapDrawable(bm); 

jetzt, was ich Ich versuche zu machen, ist ein Bild von dem, was die aktuelle Ansicht aussieht, aber von hier aus kann ich bitmapDrawable in ein ImageView setzen, aber das ist nicht das, was ich will, ich möchte von hier aus gehen, um es zu speichern. Was kann ich tun? Ich fand einen Ausweg,

FileOutputStream fos; 
    try { 
    fos = super.openFileOutput("output.png",MODE_WORLD_READABLE); 
    bm.compress(CompressFormat.PNG, 75, fos); 

     fos.flush(); 
     fos.close(); 
    } catch (FileNotFoundException e) { 
    e.printStackTrace(); 
    } catch (IOException e) { 
    e.printStackTrace(); 

}
verwenden, aber wenn ich das tue, ich am Ende mit einem Nullpointer bei

bm.compress(CompressFormat.PNG, 75, fos); 

bin ich etwas fehlt?

Okay, jetzt ist es es durch den obigen Code macht, macht es dann vorbei an fos.close(); zu beenden, aber dann passiert nichts, es ist nicht gespeichert, nicht auf meinem Handy, nichts

Antwort

0

Das einzige, was null auf sein können Diese Zeile (und eine NullPointerException verursachen) ist bm, was bedeutet, dass Bitmap bm = view.getDrawingCache(); nicht wie vorgesehen funktioniert hat. Können Sie den Stack-Trace veröffentlichen?

+0

zwei Dinge, ja, aber wie poste ich die Stack-Trace? und wenn ich es in eine Bildansicht stelle, funktioniert es und zeigt das Bild. – Samuel

+0

Könnte das das Problem sein? http://stackoverflow.com/questions/2817166/android-2-1-views-getdrawingcache-method-always-returns-null –

+0

Ich bin mir nicht sicher, was ich mit OnLayout (0, 0, 100, 100) zu tun habe; .. – Samuel