mud*_*dit 22 android thumbnails
SDK版本 - 1.6
我正在使用以下意图打开android的默认图库:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(
Intent.createChooser(intent, "Select Picture"), 101);
Run Code Online (Sandbox Code Playgroud)
现在onActivityResult,我能够获得所选图像的原始Uri和路径,但我无法获得所选图像的缩略图的Uri和路径.
获取原始图像的代码Uri和路径:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
if (requestCode == 101 && data != null) {
Uri selectedImageUri = data.getData();
String selectedImagePath = getPath(selectedImageUri);
} else {
Toast toast = Toast.makeText(this, "No Image is selected.",
Toast.LENGTH_LONG);
toast.show();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public String getPath(Uri uri) {
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
Run Code Online (Sandbox Code Playgroud)
PS:1)我不打算像这个问题调整图像大小.我特意寻找由android OS本身生成的缩略图.
2)使用SDK版本1.6,因此对ThumbnailUtils类不感兴趣.
Kar*_*ran 83
您可以使用它来获取缩略图:
Bitmap bitmap = MediaStore.Images.Thumbnails.getThumbnail(
getContentResolver(), selectedImageUri,
MediaStore.Images.Thumbnails.MINI_KIND,
(BitmapFactory.Options) null );
Run Code Online (Sandbox Code Playgroud)
有两种类型的缩略图:
MINI_KIND:512 x 384缩略图
MICRO_KIND:96 x 96 thumbnail
或者使用几乎相同参数的[queryMiniThumbnails] [1]来获取缩略图的路径.
编辑
Cursor cursor = MediaStore.Images.Thumbnails.queryMiniThumbnails(
getContentResolver(), selectedImageUri,
MediaStore.Images.Thumbnails.MINI_KIND,
null );
if( cursor != null && cursor.getCount() > 0 ) {
cursor.moveToFirst();//**EDIT**
String uri = cursor.getString( cursor.getColumnIndex( MediaStore.Images.Thumbnails.DATA ) );
}
Run Code Online (Sandbox Code Playgroud)
HTH!
[1]:https://developer.android.com/reference/android/provider/MediaStore.Images.Thumbnails.html#queryMiniThumbnails (android.content.ContentResolver,android.net.Uri,int,java.lang.String [ ])
这个解决方案对我有用!
final int THUMBSIZE = 128;
Bitmap thumbImage = ThumbnailUtils.extractThumbnail(
BitmapFactory.decodeFile(file.getAbsolutePath()),
THUMBSIZE,
THUMBSIZE);
Run Code Online (Sandbox Code Playgroud)
它可能是其他方式已经在他们的答案中提到的替代方式,但我发现获取缩略图的简单方法正在使用 ExifInterface
ExifInterface exif = new ExifInterface(pictureFile.getPath());
byte[] imageData=exif.getThumbnail();
Bitmap thumbnail= BitmapFactory.decodeByteArray(imageData,0,imageData.length);
Run Code Online (Sandbox Code Playgroud)
两种变体没有去除方法.
public String getThumbnailPath(Uri uri) {
String[] proj = { MediaStore.Images.Media.DATA };
// This method was deprecated in API level 11
// Cursor cursor = managedQuery(contentUri, proj, null, null, null);
CursorLoader cursorLoader = new CursorLoader(activity, uri, proj, null, null, null);
Cursor cursor = cursorLoader.loadInBackground();
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID);
cursor.moveToFirst();
long imageId = cursor.getLong(column_index);
//cursor.close();
String result="";
cursor = MediaStore.Images.Thumbnails.queryMiniThumbnail(activity.getContentResolver(), imageId,
MediaStore.Images.Thumbnails.MINI_KIND, null);
if (cursor != null && cursor.getCount() > 0) {
cursor.moveToFirst();
result = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails.DATA));
cursor.close();
}
return result;
}
public Bitmap getThumbnailBitmap(Uri uri){
String[] proj = { MediaStore.Images.Media.DATA };
// This method was deprecated in API level 11
// Cursor cursor = managedQuery(contentUri, proj, null, null, null);
CursorLoader cursorLoader = new CursorLoader(activity, uri, proj, null, null, null);
Cursor cursor = cursorLoader.loadInBackground();
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID);
cursor.moveToFirst();
long imageId = cursor.getLong(column_index);
//cursor.close();
Bitmap bitmap = MediaStore.Images.Thumbnails.getThumbnail(
getContentResolver(), imageId,
MediaStore.Images.Thumbnails.MINI_KIND,
(BitmapFactory.Options) null );
return bitmap;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
70947 次 |
| 最近记录: |