android获取存储在路径已知的SD卡上的图像缩略图

时间:2011-12-05 09:42:30

标签: android thumbnails

说我在路径"/mnt/images/abc.jpg"有一个图像存储。如何为此图像获取系统生成的缩略图位图。我知道如何从其Uri获取图像的缩略图,但不知道如何从其文件路径

获取

5 个答案:

答案 0 :(得分:23)

你可以试试这个:

public static Bitmap getThumbnail(ContentResolver cr, String path) throws Exception {

    Cursor ca = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[] { MediaStore.MediaColumns._ID }, MediaStore.MediaColumns.DATA + "=?", new String[] {path}, null);
    if (ca != null && ca.moveToFirst()) {
        int id = ca.getInt(ca.getColumnIndex(MediaStore.MediaColumns._ID));
        ca.close();
        return MediaStore.Images.Thumbnails.getThumbnail(cr, id, MediaStore.Images.Thumbnails.MICRO_KIND, null );
    }

    ca.close();
    return null;

}

答案 1 :(得分:4)

您可以从以下文件中获取Uri

Uri uri = Uri.fromFile(new File("/mnt/images/abc.jpg"));
Bitmap thumbnail = getPreview(uri);

以下function为您提供了缩略图:

Bitmap getPreview(Uri uri) {
    File image = new File(uri.getPath());

    BitmapFactory.Options bounds = new BitmapFactory.Options();
    bounds.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(image.getPath(), bounds);
    if ((bounds.outWidth == -1) || (bounds.outHeight == -1))
        return null;

    int originalSize = (bounds.outHeight > bounds.outWidth) ? bounds.outHeight
            : bounds.outWidth;

    BitmapFactory.Options opts = new BitmapFactory.Options();
    opts.inSampleSize = originalSize / THUMBNAIL_SIZE;
    return BitmapFactory.decodeFile(image.getPath(), opts);     
}

答案 2 :(得分:4)

它可能是其他方式已经在他们的答案中提到的替代方式,但我发现获取缩略图的简单方法是使用ExifInterface

    ExifInterface exif = new ExifInterface(pictureFile.getPath());
    byte[] imageData=exif.getThumbnail();
    if (imageData!=null) //it can not able to get the thumbnail for very small images , so better to check null
    Bitmap  thumbnail= BitmapFactory.decodeByteArray(imageData,0,imageData.length);

答案 3 :(得分:2)

您可以使用ThumnailUtil类java

创建缩略图视频和图像
Bitmap resized = ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(file.getPath()), width, height);


 public static Bitmap createVideoThumbnail (String filePath, int kind)

在API级别8中添加 为视频创建视频缩略图。如果视频损坏或格式不受支持,可能会返回null。

参数 filePath视频文件的路径 kind可以是MINI_KIND或MICRO_KIND

For more Source code of Thumbnail Util class

Developer.android.com

答案 4 :(得分:0)

使用android 位图类及其 createScaledBitmap 方法。

方法描述:

public static Bitmap createScaledBitmap (Bitmap src, int dstWidth, int dstHeight, boolean filter)

使用示例:

Bitmap bitmap = BitmapFactory.decodeFile(img_path);
int origWidth = bitmap.getWidth();
int origHeight = bitmap.getHeight();
bitmap = Bitmap.createScaledBitmap(bitmap, origWidth / 10, origHeight / 10, false);

按需要减少源文件。在我的示例中,我将其减少了10次。