当我浏览MediaStore时,有些图像的高度和重量条目为空。
文件存在,我可以用图像浏览器显示它们。
Cursor mCursor = _context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,null,null,null,MediaStore.Images.Media.DEFAULT_SORT_ORDER);
if(mCursor != null){
mCursor.moveToFirst();
while(!mCursor.isAfterLast()) {
Log.d("DEBUG","PIC PATH: " + mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media.DATA)));
Log.d("DEBUG","WIDTH: " + mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media.WIDTH)));
Log.d("DEBUG","HEGHT: " + mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media.HEIGHT)));
mCursor.moveToNext();
}
mCursor.close();
}
09-12 18:17:30.861 13002-13002 / com.google.observer D / DEBUG:PIC PATH: /storage/emulated/0/Pictures/Instagram/IMG_20160813_221335.jpg
09-12 18:17:30.861 13002-13002 / com.google.observer D / DEBUG:WIDTH: 空
09-12 18:17:30.861 13002-13002 / com.google.observer D / DEBUG:HEGHT: 空
文件的尺寸为:3366 * 2988,我可以在文件浏览器中打开它。
修改
我用柱子试了一下(参见Pavneet Singh的回答),但同样的错误。大多数图片都有效,只有少数有这个问题:
final String[] columns = {MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA, MediaStore.Images.Media.WIDTH, MediaStore.Images.Media.HEIGHT, MediaStore.Images.Media.DISPLAY_NAME, MediaStore.Images.Media.SIZE};
Cursor mCursor = _context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,columns,null,null,MediaStore.Images.Media.DEFAULT_SORT_ORDER);
if(mCursor != null){
mCursor.moveToFirst();
while(!mCursor.isAfterLast()) {
Log.d("DEBUG","PIC PATH: " + mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media.DATA)));
Log.d("DEBUG","WIDTH: " + mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media.WIDTH)));
Log.d("DEBUG","HEGHT: " + mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media.HEIGHT)));
mCursor.moveToNext();
}
mCursor.close();
}
答案 0 :(得分:1)
MediaStore
不会自动返回所有列值,因此您需要明确地将投影传递给MediaStore
查询。
final String[] columns = {
MediaStore.Images.Media.DATA,
MediaStore.Images.Media.WIDTH,
MediaStore.Images.Media.HEIGHT
};
Cursor mCursor = _context.getContentResolver().
query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
columns,null,null,
MediaStore.Images.Media.DEFAULT_SORT_ORDER);
有些人觉得它很混乱,但它增强了性能,因为可能有太多与日期,时间,标题,地点,纬度,经度等图像相关的细节,如果查询是针对所有存储的图像,会降低性能(通常情况下,它可以是数千个图像,因此数据更少,时间更少,因此性能更佳。
详细信息:某些图片可能没有所需信息,可能来自其他应用或从某个网站下载等,因此请使用更新信息。
更新:您可以按照docs方法处理几张有问题的图片