RxGalleryFinal
RxGalleryFinal copied to clipboard
big缩略图重复生成,small缩略图未生成
如题,是因为MediaGridAdapter.java 114-115行 ImageThmbnailJob.java 32,35行 造成,看线上代码已经修复,只是未发布版本 同时观察到 对于小文件(<500kb),big缩略图的大小,比原图还有大,是否对小文件不要生成big缩略图?
另,big缩略图现在的生成时机,是在浏览图片九宫格列表的时候生成的, 能否改为,进入大图预览模式再生成(预览模式提前生成左右偏移几张的图片) 毕竟使用场景里,刷九宫格图列表,是高频操作,看大图的低频操作.
MediaGridAdapter 125-131 这里,进行了判断,小图不存在获取大图地址,大图不存在获取原图地址
MediaGridAdapter 125-131 如下,这只是生成缩略图而已 path = mediaBean.getThumbnailSmallPath(); if (TextUtils.isEmpty(path)) { path = mediaBean.getThumbnailBigPath(); } if (TextUtils.isEmpty(path)) { path = mediaBean.getOriginalPath(); }
生成 缩略图 在 上一步,而不是在这里,这里直接获取了地址
// 获取 小图 大图 地址
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
获取地址ok,但是small缩略图实际上不存在,并没有生成
生成图片的路径为
/0/android/data/packageName/cache
big图以big
开头
small图以small
开头
//有时图片缩略图=“”,是不是增加下面的判断?
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);
}