我有这个代码(在这个网站上找到的地方):
public static List<MyImages> getImages(Activity context) {
List<MyImages> lst = new ArrayList<MyImages>();
Cursor cursor = getCameraThumbImages(context);
if (cursor != null) {
int columnIndex = cursor
.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);
int columnIndexPath = cursor
.getColumnIndexOrThrow(MediaStore.Images.Thumbnails.DATA);
int columnIndexImagePath = cursor
.getColumnIndexOrThrow(MediaStore.Images.Thumbnails.IMAGE_ID);
int count = cursor.getCount();
for (int i = 0; i < count; i++) {
cursor.moveToPosition(i);
int imageID = cursor.getInt(columnIndex);
String path = cursor.getString(columnIndexPath);
Uri imgThmbPath = Uri.withAppendedPath(
MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, ""
+ imageID);
String hope = cursor.getString(columnIndexImagePath);
MyImages p2p = new MyImages(path, "" + imageID);
lst.add(p2p);
}
}
return lst;
}
此代码允许我访问手机上图像的缩略图。问题是我没有看到如何从中获取原始图像路径。
问题是:给定缩略图(或光标),我如何获得原始图像路径?
答案 0 :(得分:3)
在缩略图中,您有MediaStore.Images.Thumbnails.IMAGE_ID字段,您可以从中获取相关的图片ID。然后查询MediaStore.Images.Media并从MediaStore.Images.Media.DATA字段获取照片的路径。
修改强>
// First request thumbnails what you want
String[] projection = new String[] {MediaStore.Images.Thumbnails._ID, MediaStore.Images.Thumbnails.IMAGE_ID};
Cursor thumbnails = contentResolver.query(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, projection, null, null, null);
// Then walk thru result and obtain imageId from records
for (thumbnails.moveToFirst(); !thumbnails.isAfterLast(); thumbnails.moveToNext()) {
String imageId = thumbnails.getString(thumbnails.getColumnIndex(Thumbnails.IMAGE_ID));
// Request image related to this thumbnail
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor images = contentResolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, filePathColumn, MediaStore.Images.Media._ID + "=?", new String[] {imageId}, null);
if (cursor != null && cursor.moveToFirst()) {
// Your file-path will be here
String filePath = cursor.getString(cursor.getColumnIndex(filePathColumn[0]));
}
}
//Of course you need to restrict queries using selection and selection args params and get only rows that you really need