是否可以从URI获取图像文件的宽度和高度。我试图使用此代码,但他们的错误: getAbsolutePath()
后面有语法错误令牌上的语法错误")",无效的ArgumentList
private void getDropboxIMGSize(Uri uri){
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(uri.getPath()).getAbsolutePath(), options);
int imageHeight = options.outHeight;
int imageWidth = options.outWidth;
}
答案 0 :(得分:1)
这样做
public void getDropboxIMGSize(Uri uri) {
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeFile(getAbsolutePath(uri), o);
int imageHeight = o.outHeight;
int imageWidth = o.outWidth;
}
public String getAbsolutePath(Uri uri) {
String[] projection = { MediaColumns.DATA };
@SuppressWarnings("deprecation")
Cursor cursor = managedQuery(uri, projection, null, null, null);
if (cursor != null) {
int column_index = cursor.getColumnIndexOrThrow(MediaColumns.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
} else
return null;
}
答案 1 :(得分:1)
我遇到了同样的问题,我发现它是this answer的解决方案。你必须使用
BitmapFactory.decodeFile(new File(uri.getPath()).getAbsolutePath(), options);
代码中的代码:
BitmapFactory.decodeFile(uri.getPath()).getAbsolutePath(), options);
答案 2 :(得分:0)
如果将参数提取到局部变量中,则不太可能错过括号/包含额外的参数,并且读取代码会更容易。
在:
private void getDropboxIMGSize(Uri uri){
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(uri.getPath()).getAbsolutePath(), options);
int imageHeight = options.outHeight;
int imageWidth = options.outWidth;
}
后:
private void getDropboxIMGSize(Uri uri){
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
String path = uri.getPath().getAbsolutePath();
BitmapFactory.decodeFile(path, options);
int imageHeight = options.outHeight;
int imageWidth = options.outWidth;
}
注意,您已将options.outHeight
和options.outWidth
分配给局部变量,然后方法结束;你没有对这些价值做任何事情。