如何从 png 文件加载 ImageView?

发布于 2024-08-29 23:46:54 字数 794 浏览 4 评论 0原文

我使用相机拍照。

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 中的代码是什么?

谢谢。

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

可遇━不可求 2024-09-05 23:46:54

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

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

说不完的你爱 2024-09-05 23:46:54

也可能:

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

Also possible:

java.io.FileInputStream in = openFileInput("myfile.png");
iv.setImageBitmap(BitmapFactory.decodeStream(in));
喜你已久 2024-09-05 23:46:54
iv.setImageURI(Uri.fromFile(in));
iv.setImageURI(Uri.fromFile(in));
独木成林 2024-09-05 23:46:54

为什么不这样:

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

Why not this way:

ImageView MyImageView = (ImageView)findViewById(R.id.imageView1);
Drawable d = Drawable.createFromPath( PATH TO FILE );
MyImageView.setImageDrawable(d);
檐上三寸雪 2024-09-05 23:46:54
bitmap = BitmapFactory.decodeFile(imageInSD);
bitmap = BitmapFactory.decodeFile(imageInSD);
贪恋 2024-09-05 23:46:54

decodeStream()decodeFile() 之间应该没有区别。 decodeFile() 方法打开输入流并调用 decodeStream()。这个问题已经在此链接中得到解答

There should be no difference between decodeStream() and decodeFile(). decodeFile() method opens an inputstream and calls decodeStream(). This was already answered at this link

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文