【问题标题】:How to load an ImageView from a png file?如何从 png 文件中加载 ImageView?
【发布时间】:2018-01-18 15:49:37
【问题描述】:

我用相机拍照

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,则会失败。

可以使用以下命令打开文件OK:

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

但这并没有给我设置图像所需的 Uri

   iv.setImageURI(u)

总结:我在私人应用数据中的 png 文件中有图片。将其设置为 ImageView 的代码是什么?

谢谢。

【问题讨论】:

    标签: android file load png imageview


    【解决方案1】:

    尝试BitmapFactory.decodeFile(),然后在ImageView 上尝试setImageBitmap()

    【讨论】:

    • 谢谢,是的,做到了。唯一需要注意的是,您将 bmp.Compress 压缩到一个文件中,只提供文件名。但是要解码同一个文件,您必须构建并提供整个路径名。 Android 有几个像这样轻率的不对称。字符串 fname = c.getFilesDir().getAbsolutePath()+"/myfile.png";位图 bm = BitmapFactory.decodeFile(fname); iv.setImageBitmap(bm);
    • 为了避免 OOM 和“位图太大而无法上传到纹理”错误:developer.android.com/training/displaying-bitmaps/…
    • 为我工作!非常感谢! @CommonsWare 请,你认为你能帮我解决这个问题吗goo.gl/wO9G2N
    • 文件需要放在什么目录下?
    【解决方案2】:

    也可以:

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

    【讨论】:

      【解决方案3】:
      iv.setImageURI(Uri.fromFile(in));
      

      【讨论】:

      • 请详细说明你的答案(用文字),而不是仅仅提供一行代码。
      【解决方案4】:

      为什么不这样:

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

      【讨论】:

        【解决方案5】:
        bitmap = BitmapFactory.decodeFile(imageInSD);
        

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-10-04
            • 2015-01-06
            • 2013-06-03
            • 1970-01-01
            • 2020-09-02
            相关资源
            最近更新 更多