web-dev-qa-db-fra.com

Comment charger un ImageView à partir d'un fichier png?

Je prends une photo avec l'appareil photo en utilisant

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

Une fois l'activité terminée, j'écris l'image bitmap dans un fichier PNG.

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

Cela va bien, et je peux voir que le fichier est créé dans l'espace de données privé de mon application.

Je ne parviens pas à afficher cette image ultérieurement à l'aide d'un ImageView.

Quelqu'un peut-il suggérer un code pour le faire?

Si j'essaie de créer un fichier avec des séparateurs de chemin, cela échoue. Si j'essaie de créer un Uri à partir d'un nom sans séparateurs, cela échoue.

Je peux ouvrir le fichier OK en utilisant:

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

Mais cela ne me donne pas le Uri dont j'ai besoin pour définir une image avec

   iv.setImageURI(u)

Résumé: j'ai l'image dans un fichier png dans les données de l'application privée. Quel est le code pour définir cela dans un ImageView?

Merci.

11
Peter vdL

Essayez BitmapFactory.decodeFile() puis setImageBitmap() sur ImageView.

33
CommonsWare

Également possible:

Java.io.FileInputStream in = openFileInput("myfile.png");
iv.setImageBitmap(BitmapFactory.decodeStream(in));
8
Apc
iv.setImageURI(Uri.fromFile(in));
3
user2107276

Pourquoi pas de cette façon:

ImageView MyImageView = (ImageView)findViewById(R.id.imageView1);
Drawable d = Drawable.createFromPath( PATH TO FILE );
MyImageView.setImageDrawable(d);
1
Bernd
bitmap = BitmapFactory.decodeFile(imageInSD);
1
Nauman Khalid

Il ne devrait y avoir aucune différence entre decodeStream() et decodeFile(). La méthode decodeFile() ouvre un flux d'entrée et appelle decodeStream(). Cela a déjà été répondu à ce link

0
Alvaro