0

我正在打开图库并在选择图像时获取图像的路径。然后我从这个路径创建一个位图,并通过bitmap.compress()函数将此位图存储在内部存储中。是否可以通过在 ImageView 的setImageUri()函数中指定此存储位图的路径来在 ImageView 中显示此图像?

Bitmap bmap = BitmapFactory.decodeFile(selectedImagePath);
FileOutputStream fos = context.openFileOutput(fileName, Context.MODE_PRIVATE);
bmap.compress(CompressFormat.PNG, 100, fos);
fos.close();

在这里,fileName是一个整数(实际上是一个小部件的 ID)转换为字符串。

是否可以像这样在 ImageView 中加载此图像:

File internalFile = getFileStreamPath(fileName);
Uri internal = Uri.fromFile(internalFile);
imageView.setImageUri(internal);

我知道我可以使用setImageBitmap()函数设置图像,但这需要我从文件中读取位图并将其传递给 Parcel 对象,这会在图像很大时导致Failed Binder Transaction错误。我正在制作一个通过 ImageView 显示图像的小部件。

4

1 回答 1

1

setImageUri() 方法不打算以这种方式使用,请参阅此问题和答案。最好的方法似乎是在调用 setImageBitmap() 之前将位图缩放到视图,例如使用带有 Matrix 参数的 Bitmap.createBitmap()

于 2012-08-11T15:27:11.623 回答