Android 如何从png文件加载ImageView?

Android 如何从png文件加载ImageView?,android,file,load,png,imageview,Android,File,Load,Png,Imageview,我用相机拍了一张照片 Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE ); startActivityForResult( intent, 22 ); 活动完成后,我将位图图片写入PNG文件 java.io.FileOutputStream out = openFileOutput("myfile.png", Context.MODE_PRIVATE); bmp.compre

我用相机拍了一张照片

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE );
startActivityForResult( intent, 22 );
活动完成后,我将位图图片写入PNG文件

    java.io.FileOutputStream out = openFileOutput("myfile.png", Context.MODE_PRIVATE);
    bmp.compress(Bitmap.CompressFormat.PNG, 90, out);
没问题,我可以看到文件是在我的应用程序私有数据空间中创建的

当我以后想要使用ImageView显示该图像时,我遇到了困难

有人能推荐代码来做这件事吗

如果我尝试创建一个包含路径分隔符的文件,它将失败。 如果我尝试从没有分隔符的名称创建Uri,则会失败

我可以使用以下方法打开文件确定:

        java.io.FileInputStream in = openFileInput("myfile.png");
但这并没有给我设置图像所需的Uri

   iv.setImageURI(u)
小结:我在私有应用程序数据的png文件中有这张图片。将其设置为ImageView的代码是什么


谢谢。

尝试
位图工厂.decodeFile()
,然后在
图像视图上
设置图像位图()
,也可以:

java.io.FileInputStream in = openFileInput("myfile.png");
iv.setImageBitmap(BitmapFactory.decodeStream(in));
为什么不这样做:

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

decodeStream()
decodeFile()
之间应该没有区别
decodeFile()
方法打开一个输入流并调用
decodeStream()
。这个问题已经得到了回答

谢谢,是的,已经回答了。唯一需要注意的是,你可以将它压缩成一个文件,只给出文件名。但要解码同一个文件,必须构造并提供整个路径名。Android有几个像这样的轻率的不对称。字符串fname=c.getFilesDir().getAbsolutePath()+“/myfile.png”;位图bm=BitmapFactory.decodeFile(fname);iv.设置图像位图(bm);为了避免OOM和“位图太大,无法上传到纹理”错误:适合我!多谢各位@Commonware请问,你认为你能帮我解决这个问题吗?文件需要在哪个目录下?请详细说明你的答案(用文字),而不是仅仅提供一行代码。
iv.setImageURI(Uri.fromFile(in));
ImageView MyImageView = (ImageView)findViewById(R.id.imageView1);
Drawable d = Drawable.createFromPath( PATH TO FILE );
MyImageView.setImageDrawable(d);