2010-04-22 8 views
11

Ich nehme ein Bild mit der KameraWie lade ich ein ImageView aus einer PNG-Datei?

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(intent, 22); 

Verwendung Wenn die Aktivität abgeschlossen ist, schreibe ich das Bitmap-Bild in eine PNG-Datei aus.

Das geht OK, und ich kann sehen, dass die Datei in meiner App privaten Datenraum erstellt wird.

Ich habe Schwierigkeiten, wenn ich dieses Bild später mit einem ImageView anzeigen möchte.

Kann jemand Code vorschlagen, um dies zu tun?

Wenn ich versuche, eine Datei mit Pfadtrennzeichen in erstellen, schlägt es fehl. Wenn ich versuche, ein Uri von einem Namen ohne Trennzeichen zu erstellen, schlägt das fehl.

I kann öffnen Sie die Datei OK mit:

 java.io.FileInputStream in = openFileInput("myfile.png"); 

Aber das macht mir nicht das Uri geben Ich brauche ein Bild mit

iv.setImageURI(u) 

Zusammenfassung zu setzen: Ich habe das Bild haben in einer PNG-Datei in privaten App-Daten. Wie lautet der Code, um das in ein ImageView zu setzen?

Danke.

Antwort

33

Versuchen Sie BitmapFactory.decodeFile() und dann setImageBitmap() über die ImageView.

+1

beantwortet. Danke, ja, das hat es getan. Die einzige Sache zu beobachten ist, dass Sie bmp.Compress es in eine Datei, geben nur den Dateinamen. Aber um die gleiche Datei zu dekodieren, müssen Sie den gesamten Pfadnamen erstellen und bereitstellen. Android hat mehrere gedankenlose Asymmetrien wie diese. Zeichenfolge fname = c.getFilesDir(). GetAbsolutePath() + "/ myfile.png"; Bitmap bm = BitmapFactory.decodeFile (fname); iv.setImageBitmap (bm); –

+1

Um OOM und "Bitmap zu groß, um in eine Textur hochgeladen werden" Fehler zu vermeiden: http://developer.android.com/training/displaying-bitmaps/load-bitmap.html – Adam

+0

Funktioniert für mich! Vielen Dank! @CommonsWare Könntest du mir bitte bei dieser Frage helfen http://goo.gl/wO9G2N – eddy

7

Auch möglich:

java.io.FileInputStream in = openFileInput("myfile.png"); 
iv.setImageBitmap(BitmapFactory.decodeStream(in)); 
+7

Warum ist es noch besser als BitmapFactory.decodeFile (Pfad)? –

1
bitmap = BitmapFactory.decodeFile(imageInSD); 
3
iv.setImageURI(Uri.fromFile(in)); 
+0

Bitte erläutern Sie Ihre Antwort (in Worten), anstatt nur eine einzige Codezeile anzugeben. – JLRishe

+0

Der Code scheint ziemlich klar – Nevir

1

Warum nicht so:

ImageView MyImageView = (ImageView)findViewById(R.id.imageView1); 
Drawable d = Drawable.createFromPath(PATH TO FILE); 
MyImageView.setImageDrawable(d); 
0

Es sollte keinen Unterschied zwischen decodeStream() und decodeFile() sein. decodeFile() Methode öffnet einen Eingangsstrom und ruft decodeStream() auf. Dies wurde bereits bei dieser link

Verwandte Themen