EzImageLoader
EzImageLoader 是一个易于使用的库,用于通过 HTTP/HTTPS 加载图像。EzImageLoader 与 EzHTTP 相关。
功能
- 最简单的图像加载
- 只需编写更短的代码
- 支持 WebP
- 支持 GIF 格式:当然,支持动画 GIF
- 扩展 UIImage 和 UIImageView
- 使用 EzHTTP 进行 HTTP/HTTPS 请求
要求
- iOS 8.0+
- Swift 3 和 EzImageLoader v3.x 的 Xcode 8+
如果您使用 Swift 2.x,请使用 EzImageLoader v0.0.x。
安装
CocoaPods
在 Podfile 的依赖中添加 EzImageLoader。
pod 'EzImageLoader'
示例 Podfile 在此处:here。
Carthage
您也可以使用 Carthage 安装 EzImageLoader。在您的 Cartfile 中添加此行。
github "asaday/EzImageLoader"
使用方法
首先导入 EzImageLoader。
import EzImageLoader
此外,导入 EzHTTP 以轻松创建 URLRequest。
import EzHTTP
基本
GET
获取图像。
let iv = UIImageView(frame: view.bounds)
ImageLoader.get("https://httpbin.org/image/png") {iv.image = $0.image}
获取图像并进行缩放
let mSize = CGSize(width: 200, height: 200)
ImageLoader.get(urlStr, size: mSize) {iv.image = $0.image}
URLRequest
使用 NSURLRequest 获取图像。注意 “HTTP.createRequest()” 使用 EzHTTP 创建 URLRequest。
let iv = UIImageView(frame: view.bounds)
let req = HTTP.createRequest(.GET, "https://httpbin.org/image/png", params: [:], headers: [:])
ImageLoader.request(req!) {iv.image = $0.image}
请求并缩放图像。
let mSize = CGSize(width: 200, height: 200)
ImageLoader.request(req!, size:mSize) {iv.image = $0.image}
结果
您可以获取有关请求的一些信息。ResultReason是枚举类型,用于表示结果的状况。
$0.image
UIImage?$0.reason
enum ResultReason$0.decodeTime
TimeInterval$0.downloadTime
TimeInterval
let iv = UIImageView(frame: view.bounds)
let mSize = CGSize(width: 300, height: 200)
ImageLoader.get("https://www.gstatic.com/webp/gallery/4.webp", size: mSize) {
iv.image = $0.image
print("Reason", $0.reason)
print("Decode Time", $0.decodeTime)
print("Download Time", $0.downloadTime)
}
// Reason downloaded
// Decode Time 0.0499059557914734
// Download Time 0.553457021713257
异步
异步请求 .requestASync()
或 .getASyinc()
用于非主任务中的使用。
let req = HTTP.createRequest(.GET, "https://httpbin.org/image/png", params: [:], headers: [:])
let img1:UIImage? = ImageLoader.requestASync(req!)
let img2:UIImage? = ImageLoader.getASync("https://httpbin.org/image/png")
let img3:UIImage? = ImageLoader.getASync(urlStr, headers: ["Custom-Content":":D"])
UIImageView 扩展
EzImageLoader 扩展了 UIImageView。它非常简单易用。
let iv = UIImageView(frame: view.bounds)
iv.loadURL("https://httpbin.org/image/webp")
// With additional headers
iv.loadURL("https://httpbin.org/image/png", headers: ["Custom-Content":"HAHAHA"])
// Apply Filter
let ilFilter = ImageLoader.Filter.resizer(CGSize(width: 320, height: 320))
iv.loadURL("https://httpbin.org/image/png", filter: ilFilter)
与 URLRequest 一起使用。
let iv = UIImageView(frame: view.bounds)
let req = HTTP.createRequest(.GET, "https://httpbin.org/image/png", params: [:], headers: [:])
iv.loadRequest(req!)
// Apply Filter
let ilFilter = ImageLoader.Filter.resizer(CGSize(width: 280, height: 280))
iv.loadRequest(req!, filter: ilFilter)
UIImage 扩展
调整-image的大小,适用于UIImage。
let img:UIImage = #imageLiteral(resourceName: "SpImage").resize(CGSize(width: 280, height: 280))
获取图像作为Data并进行解码为UIImage。可以很好地使用动画GIF和WebPs。
let gifURL = "https://upload.wikimedia.org/wikipedia/commons/2/2c/Rotating_earth_%28large%29.gif"
HTTP.get(gifURL) {
let img = UIImage.decode($0.data!)
iv.image = img
}