开源最前线 猿妹编译
素材来自:腾讯开源、GitHub等
近日,腾讯又有新的开源项目啦,高性能的图片框架 LKImageKit 正式开源
图片框架 LKImageKit
授权协议:BSD
开发语言:Objective-C
操作系统:iPhone/iPad/iPod
GitHub地址:https://github.com/Tencent/LKImageKit
LKImageKit 简介
LKImageKit 是一个高性能的图片框架,包括了图片控件,图片下载、内存缓存、磁盘缓存、图片解码、图片处理等一系列能力。合理的架构和线程模型,并特别针对不同场景进行优化,能充分发挥硬件的性能。
该框架具有高度的扩展性。在此框架下,开发者可以自定义图片框架中的任何一个部分,比如:自定义图片显示逻辑、自定义缓存、自定义下载组件、自定义解码器、自定义图片处理算法等等。
该组件旨在提供 iOS 平台上使用最简单,功能最强大的高性能图片解决方案。
LKImageKit 特性
LKImageKit 组件具有如下特性:
● 提供演示视频和 DEMO
DEMO中演示了如何在图片墙场景的数千张图片下,配合预加载、优先级控制、分级加载等技术,实现图片在快速滑动场景的高速下载和显示
● 模块插件化
可定制缓存、解码、加载、绘制等多个模块
● 支持取消
不再显示的图片迅速取消请求,节约内存占用
● 支持优先级、优先级可动态调整
通过对不同区域优先级的设置,使页面加载获得更好的体验
● 支持预加载
可以预先加载图片,预加载和图片正常显示会自动合并
● 动图支持
支持多图动态播放,包括正向播放、逆向播放、来回播放等
● 雪碧图支持
提供将雪碧图解码成序列帧的能力
● 滤镜支持
支持在图片显示前异步对图片进行滤镜处理
● 渐进式加载
支持图片边下载边显示
● 多级加载
支持多级请求,比如先加载小图再加载大图
● 后台解码
使用后台线程解码,提升页面流畅度
● 请求合并
相同类型的请求会被合并,不会导致重复的运算和下载
● 并发数控制
可以分别对加载、解码、处理等多个模块进行分别并发控制
LKImageKit 特性
LKImageKit 可分为加载模块、解码模块以及缓存模块,各个模块的划分如下:
● 加载模块
网络文件加载(带文件缓存)
本地文件加载
相册加载
Bundle加载
● 解码模块
ImageIO
系统内置解码模块,支持PNG、JPG、GIF,支持渐进式解码
● 缓存模块
LRU、FIFO双队列缓存
MapTable自动缓存
完整加载速度视频如下:
class="video_iframe" data-vidtype="2" allowfullscreen="" frameborder="0" data-ratio="0.4666666666666667" data-w="224" scrolling="no" data-src="http://v.qq.com/iframe/player.html?vid=v1334keu7yb&width=670&height=502.5&auto=0" style="display: block; width: 670px !important; height: 502.5px !important;" width="670" height="502.5" data-vh="502.5" data-vw="670" src="http://v.qq.com/iframe/player.html?vid=v1334keu7yb&width=670&height=502.5&auto=0"/>