RxGalleryFinal icon indicating copy to clipboard operation
RxGalleryFinal copied to clipboard

big缩略图重复生成,small缩略图未生成

Open xuybin opened this issue 6 years ago • 7 comments

如题,是因为MediaGridAdapter.java 114-115行 ImageThmbnailJob.java 32,35行 造成,看线上代码已经修复,只是未发布版本 同时观察到 对于小文件(<500kb),big缩略图的大小,比原图还有大,是否对小文件不要生成big缩略图?

另,big缩略图现在的生成时机,是在浏览图片九宫格列表的时候生成的, 能否改为,进入大图预览模式再生成(预览模式提前生成左右偏移几张的图片) 毕竟使用场景里,刷九宫格图列表,是高频操作,看大图的低频操作.

xuybin avatar Aug 30 '17 09:08 xuybin

Album

7449 avatar Aug 30 '17 15:08 7449

MediaGridAdapter 125-131 这里,进行了判断,小图不存在获取大图地址,大图不存在获取原图地址

7449 avatar Aug 31 '17 15:08 7449

MediaGridAdapter 125-131 如下,这只是生成缩略图而已 path = mediaBean.getThumbnailSmallPath(); if (TextUtils.isEmpty(path)) { path = mediaBean.getThumbnailBigPath(); } if (TextUtils.isEmpty(path)) { path = mediaBean.getOriginalPath(); }

xuybin avatar Sep 01 '17 04:09 xuybin

生成 缩略图 在 上一步,而不是在这里,这里直接获取了地址

        // 获取 小图 大图  地址
        String bitPath = mediaBean.getThumbnailBigPath();
        String smallPath = mediaBean.getThumbnailSmallPath();

        
        // 如果大图 或者小图 地址不存在,则生成
        if (!new File(bitPath).exists() || !new File(smallPath).exists()) {
            Job job = new ImageThmbnailJobCreate(mMediaActivity, mediaBean).create();
            RxJob.getDefault().addJob(job);
        }
        
        
        String path;
        if (mConfiguration.isPlayGif() && (imageLoaderType == 3 || imageLoaderType == 2)) {
            
            //如果播放  gif 则直接获取原图地址,因为gif生成的小图以及大图是 jpg
            path = mediaBean.getOriginalPath();
        } else {
            
            // 获取小图地址
            path = mediaBean.getThumbnailSmallPath();
            
            //如果小图地址不存在
            if (TextUtils.isEmpty(path)) {
                //获取大图地址
                path = mediaBean.getThumbnailBigPath();
            }
            //如果大图地址不存在,获取原图地址
            if (TextUtils.isEmpty(path)) {
                path = mediaBean.getOriginalPath();
            }
        }
        //地址传入 ImageLoader

7449 avatar Sep 01 '17 05:09 7449

获取地址ok,但是small缩略图实际上不存在,并没有生成

monty8800 avatar Sep 26 '17 03:09 monty8800

生成图片的路径为

    /0/android/data/packageName/cache

big图以big开头 small图以small开头

7449 avatar Sep 26 '17 04:09 7449

//有时图片缩略图=“”,是不是增加下面的判断?

final List mediaBeans = imageMultipleResultEvent.getResult(); 
for(MediaBean mediaBean:mediaBeans){ 
String bitPath = mediaBean.getThumbnailBigPath(); 
if(!new File(bitPath).exists()){ 
Job job = new ImageThmbnailJobCreate(activity,mediaBean).create(); 
RxJob.getDefault()addJob(job); 
} 

peng093 avatar Jun 13 '19 03:06 peng093