我想将图像加载到Android上的ImageView中。现在,我知道如果图像太大,我必须缩放它,以便它不会占用太多内存。
我想在这里做的事情是:http://developer.android.com/training/displaying-bitmaps/load-bitmap.html
现在,我获取图像的方式是通过它的URI这样:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"text"),1);
protected void onActivityResult(int reqCode, int resCode, Intent data){
super.onActivityResult(reqCode, resCode, data);
if (reqCode == 1 && resCode == RESULT_OK && data != null) {
Uri selectedImage = data.getData();
}
}
如果我想使用一些decode *()方法,我不能用URI做到这一点。所以我的首选是使用:
decodeFile(imageUri.getPath(),options);
但是当我这样做时,我从画廊得到的路径就像:/ documents / image:9023
我该怎么做? 我只需要打开图库并从显示中获取图像,也可以将其保存为位图,以便我可以编辑它。
答案 0 :(得分:1)
即使我在几天前遇到类似的问题,
1。)首先将您的Uri转换为字符串
String SelectedImageString= selectedImage.toString();
2.)一旦你将获得图像的字符串路径,你可以将其转换为位图,并使用bitmapFactory选项调整它的大小。
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 8;
Bitmap bitmap;
bitmap=BitmapFactory.decodeFile(SelectedImageString, options);
imageView.setImageBitmap(bitmap);
它对我有用,我希望它会对你有所帮助。
答案 1 :(得分:0)
如果我想使用一些decode *()方法,我不能用URI
来做
当然可以。在openInputStream()
上致电ContentResolver
,然后将InputStream
传递给decodeStream()
上的BitmapFactory
方法。
A Uri
is not necessarily a file,所以不要试图将其视为一个。