Gallery 裁剪图片功能说明

了解Gallery中对图片的裁剪算法,同时也对比framework层对图片的裁剪处理;
1Gallery裁剪图片时序图
在Gallery中,当要显示图片,缩略图或者大图时,都不是显示的完整的图片,会根据屏幕自身的分辨率,裁剪之后显示;缩略图或者大图,其执行流程类似,只是采用了不同的算法,这里以大图的显示为例进行说明;具体如下图所示:
在这里插入图片描述
大图在显示之前,就被提前放置到cache中,如果cache中存在,则直接从中取之,编解码之后显示,如果不存在,则获取原始图片,裁剪,放置cache中即可;上述时序图,正是裁剪之后的图片放置cache的过程;
2各步骤说明
2.11~5步
第2步onDechodeOriginal 就是获取原始图片的过程,在第5步中会返回原始大小Bitmap;
在第4步中就是获取原始图片的关键;
先将options.inJustDecodeBounds = true; 调用BitmapFactory.decodeFileDescriptor(fd, null, options); 此时不会返回bitmap对象,只是获取图片的width和height值。目的是为了确认原始图片的大小是否有变化,通过isNeedKeepOriginRatio判断;
然后将options.inSampleSize = 1 和options.inJustDecodeBounds = false,inSampleSize为1表示获取图片的原始大小,inJustDecodeBounds为false,此时就会获取到真正的Bipmap对象,调用Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length,

猜你喜欢

转载自blog.csdn.net/qq_42894864/article/details/102687859