【发布时间】:2016-09-12 16:22:26
【问题描述】:
当我在 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:图片路径: /storage/emulated/0/Pictures/Instagram/IMG_20160813_221335.jpg
09-12 18:17:30.861 13002-13002/com.google.observer D/DEBUG: 宽度: 空
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();
}
【问题讨论】:
-
能认出并告诉我那几张没有高度和宽度的图片是从您的手机拍摄的,还是您从某个地方下载的?因为如果媒体商店有信息,那么它肯定会给你最喜欢的图片,否则看起来你的少数图片没有你需要的细节
-
示例图片来自我的 instagram 文件夹。当我使用文件资源管理器(ES 文件资源管理器)查看图片中的详细信息时,它会显示宽度和高度。当媒体存储无法获取信息时,唯一的解决方案是使用 BitmapFactory 还是?
-
是的,另一种方法
bitmapfactory,但显然还有一些额外的处理,就像我说导致问题的图像是来自外部的外星人,尝试更新答案中的链接,将指导:p
标签: android mediastore