gpt4 book ai didi

android - 如何在不使用 "setImageBitmap()"的情况下加载带有 png 文件的 ImageView?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:12:32 26 4
gpt4 key购买 nike

我对 Bitmap 对象做了一些处理(质量改进和一些调整大小),然后通过给定文件名使用 bitmap.compress() 函数存储它“我的文件.png”。

newbitmap = processImage(bitmap);
FileOutputStream fos = context.openFileOutput("myfile.png", Context.MODE_PRIVATE);
newbitmap.compress(CompressFormat.PNG, 100, fos);

现在我想在 ImageView 中加载此图像,但我不能使用 setImageBitmap() 来执行此操作。还有其他选择吗?

我不能使用 setImageBitmap() 的原因是我正在使用 RemoteViews 作为小部件,并且使用位图方法导致 Binder 事务失败 图片较大时出错。

我尝试使用下面的代码设置图像 uri,但图像未加载到 ImageView 上:

RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.widget_layout);

File internalFile = context.getFileStreamPath("myfile.png");
Uri internal = Uri.fromFile(internalFile);
rv.setImageViewUri(R.id.widgetImageView, internal);
updateAppWidget(awID, rv);

感谢您的帮助!

最佳答案

在内部存储中存储图像时,您必须将模式设置为 MODE_WORLD_READABLE 而不是 MODE_PRIVATE。这是因为小部件由主屏幕进程处理,如果您未正确设置模式,它无法访问您的文件。

所以替换这一行:

FileOutputStream fos = context.openFileOutput("myfile.png", Context.MODE_PRIVATE);

与:

FileOutputStream fos = context.openFileOutput("myfile.png", Context.MODE_WORLD_READABLE);

此外,使用 Uri.parse()getPath() 而不是 fromFile()fromFile() 仅适用于 Android 2.2 及更高版本。

Uri internal = Uri.Parse(internalFile.getPath());

希望这对您有所帮助!

关于android - 如何在不使用 "setImageBitmap()"的情况下加载带有 png 文件的 ImageView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11917299/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com