使用“bitmap.compress()”将图像存储在内部存储中,并使用“setImageUri()”在ImageView中显示?

时间:2012-08-11 14:34:24

标签: android bitmap android-imageview

我正在打开图库并在选择图像时获取图像的路径。然后我从这个路径创建一个Bitmap,并通过 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 是转换为String的整数(实际上是窗口小部件的ID)。

是否可以在ImageView中加载此图像,如下所示:

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

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

1 个答案:

答案 0 :(得分:1)

setImageUri()方法不打算以这种方式使用,请参阅this question and answers。最好的方法似乎是在调用setImageBitmap()之前将位图缩放到视图,例如使用Bitmap.createBitmap() with a Matrix parameter