2010-04-22 24 views
11

faccio una foto con la fotocamera utilizzandoCome caricare un ImageView da un file png?

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

Quando l'attività viene completata, scrivo l'immagine bitmap in un file PNG.

java.io.FileOutputStream out = openFileOutput("myfile.png", Context.MODE_PRIVATE); 
    bmp.compress(Bitmap.CompressFormat.PNG, 90, out); 

Questo va bene, e posso vedere il file viene creato nello spazio dati privato della mia app.

Ho difficoltà quando in seguito voglio visualizzare quell'immagine utilizzando un ImageView.

Qualcuno può suggerire il codice per farlo?

Se provo a creare un file con separatori di percorso, fallisce. Se provo a creare un Uri da un nome senza separatori, questo fallisce.

ho può aprire il file utilizzando OK:

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

Ma questo non mi dà l'Uri ho bisogno di impostare un'immagine con

iv.setImageURI(u) 

Sommario: Ho l'immagine in un file png in dati app privati. Qual è il codice per impostarlo in un ImageView?

Grazie.

risposta

33

Provare BitmapFactory.decodeFile() e quindi setImageBitmap() su ImageView.

+1

Grazie, sì, è stato così. L'unica cosa da guardare è che si bmp.Compressa in un file, dando solo il nome del file. Ma per decodificare quello stesso file, è necessario costruire e fornire l'intero percorso. Android ha diverse asimmetrie sconsiderate come questa. String fname = c.getFilesDir(). GetAbsolutePath() + "/ myfile.png"; Bitmap bm = BitmapFactory.decodeFile (fname); iv.setImageBitmap (bm); –

+1

Per evitare OOM e errori "bitmap troppo grandi per essere caricati in una texture": http://developer.android.com/training/displaying-bitmaps/load-bitmap.html – Adam

+0

Funziona per me! Grazie mille! @CommonsWare Per favore, pensi che potresti aiutarmi con questa domanda http://goo.gl/wO9G2N – eddy

7

Anche possibile:

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

Perché è ancora meglio di BitmapFactory.decodeFile (percorso)? –

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

Si prega di elaborare la risposta (in parole) anziché fornire una sola riga di codice. – JLRishe

+0

Il codice sembra abbastanza chiaro – Nevir

1

Perché non in questo modo:

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

Non ci dovrebbe essere alcuna differenza tra decodeStream() e decodeFile(). Il metodo decodeFile() apre un inputstream e chiama decodeStream(). Questo ha già risposto a questo link

Problemi correlati