Android图片加载(2)

缩略图


上一篇博客我们讲述了怎么查找所有图片信息,其中包括构造实体对象以及使用Cursor,ContentResolver,MediaProvider类进行数据查找,还没有看过的小伙伴可以点击这里哦上一讲

接下来我们要干的工作就是拿到视频和照片的缩略图,吼吼,这里面回用到ThumbnailUtils和MediaMetadataRetriever类。


图片缩略图的获取
由于用到的类和代码都比较简单,我直接贴出代码,有疑问可以留言问我:

public Bitmap getImageThumbnail(int imageId,String imagePath, int width, int height, boolean isFull) {
//为了方便调用,我传进来很多项,大家可以根据自己的项目需要进行精简
        Bitmap bitmap = null;
        BitmapFactory.Options options = new BitmapFactory.Options();
        if (bitmap == null ) {
            options.inJustDecodeBounds = true;
            bitmap = BitmapFactory.decodeFile(imagePath, options);
            options.inJustDecodeBounds = false; // 设为 false
            int h = options.outHeight;
            int w = options.outWidth;
            int beWidth = w / width;
            int beHeight = h / height;
            int be = 1;
            if (beWidth < beHeight) {
                be = beWidth;
            } else {
                be = beHeight;
            }
            if (be <= 0) {
                be = 1;
            }
            options.inSampleSize = be;
            bitmap = BitmapFactory.decodeFile(imagePath, options);
            bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height, ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
        }
        if (bitmap == null) {
            return null;
        }
        return bitmap;
    }

另外在进行图片压缩的时候我们还可以采用其他策略,在此就不一一列举,后面有机会做一个集合贴。


视频缩略图的获取
同上的原因,直接扔代码:

public Bitmap getVideoThumbnail(String videoPath, int width, int height, int kind,boolean isFull) {
        Bitmap bitmap = null;
            bitmap = ThumbnailUtils.createVideoThumbnail(videoPath, kind);
            bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height, ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
        if (bitmap == null){
            return null;
        }
        return bitmap;
    }

    public Bitmap getVideoThumbnail1(String videoPath,int width, int height,boolean isFull){
        Bitmap bitmap = null;
            MediaMetadataRetriever retriever = new MediaMetadataRetriever();
            try {
                retriever.setDataSource(videoPath);
                bitmap = retriever.getFrameAtTime(1000);
            } catch (IllegalArgumentException ex) {
            } catch (RuntimeException ex) {
            } finally {
                try {
                    retriever.release();
                } catch (RuntimeException ex) {
                    // Ignore failures while cleaning up.
                }
            }
            if (bitmap == null) return null;
            int mwidth = bitmap.getWidth();
            int mheight = bitmap.getHeight();
            if (mwidth > width) {
                float scale = (float) width / mwidth;
                float scale2=(float) height/mheight;
                int w = Math.round(scale * mwidth);
                int h = Math.round(scale2 * mheight);
                bitmap = Bitmap.createScaledBitmap(bitmap, w, h, true);
            }
        if (bitmap == null){
            return null;
        }
        return bitmap;
    }

对于视频,我给了两个获取缩略图的方法,大家可以参考使用。
另外我们还可以通过MediaStore.Images.Thumbnail或者MediaStore.Videos.Thumbnail以及ContentProvider等方式获得缩略图,有兴趣的小伙伴可以自己去百度一下,我就不逐一罗列了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值