views:

651

answers:

2

I take a picture with the camera using

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

When the activity completes, I write the bitmap picture out to a PNG file.

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

That goes OK, and I can see the file is created in my app private data space.

I'm having difficulty when I later want to display that image using an ImageView.

Can anyone suggest code to do this?

If I try to create a File with path separators in, it fails. If I try to create a Uri from a name without separators, that fails.

I can open the file OK using:

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

But that doesn't give me the Uri I need to set an image with

   iv.setImageURI(u)

Summary: I have the picture in a png file in private app data. What's the code to set that into an ImageView?

Thanks.

+2  A: 

Try BitmapFactory.decodeFile() and then setImageBitmap() on the ImageView.

CommonsWare
Thanks, yeah, that did it.The only thing to watch is that you bmp.Compress it into a file, giving just the file name.But to decode that same file, you have to construct and provide the entire pathname. Android has several thoughtless asymmetries like this. String fname = c.getFilesDir().getAbsolutePath()+"/myfile.png"; Bitmap bm = BitmapFactory.decodeFile(fname); iv.setImageBitmap(bm);
Peter vdL
A: 

Even better:

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