# KingfisherWebP [![CI Status](https://github.com/Yeatse/KingfisherWebP/workflows/unittest/badge.svg)](https://travis-ci.org/Yeatse/KingfisherWebP) [![Version](https://img.shields.io/cocoapods/v/KingfisherWebP.svg?style=flat)](http://cocoapods.org/pods/KingfisherWebP) [![License](https://img.shields.io/cocoapods/l/KingfisherWebP.svg?style=flat)](http://cocoapods.org/pods/KingfisherWebP) [![Platform](https://img.shields.io/cocoapods/p/KingfisherWebP.svg?style=flat)](http://cocoapods.org/pods/KingfisherWebP) # Description KingfisherWebP is an extension of the popular library [Kingfisher](https://github.com/onevcat/Kingfisher), providing an ImageProcessor and CacheSerializer for you to conveniently handle the [WebP format](https://developers.google.com/speed/webp/). The library works seamlessly with `Kingfisher`. To display the webp images from network, simply add `WebPProcessor` and `WebPSerializer` to your `KingfisherOptionsInfo`: ```swift let url = URL(string: "url_of_your_webp_image") imageView.kf.setImage(with: url, options: [.processor(WebPProcessor.default), .cacheSerializer(WebPSerializer.default)]) ``` For convenience, you may set it as a global default option to all `KingfisherManager` related methods: ```swift // somewhere after your application launches... KingfisherManager.shared.defaultOptions += [ .processor(WebPProcessor.default), .cacheSerializer(WebPSerializer.default) ] // You can now use webp in Kingfisher like any other format imageView.kf.setImage(with: url) ``` Some image servers may expect the `"Accept"` header to include `"image/webp"`. You can include this header to all Kingfisher requests by doing: ```swift let modifier = AnyModifier { request in var req = request req.addValue("image/webp */*", forHTTPHeaderField: "Accept") return req } KingfisherManager.shared.defaultOptions += [ .requestModifier(modifier), // ... other options ] ``` If the image data is not in webp format, the default processor and serializer in `Kingfisher` will be used. ## Example To run the example project, clone the repo, and run `pod install` from the Example directory first. ## Requirements iOS 8 or above ## Installation ### CocoaPods KingfisherWebP is available through [CocoaPods](http://cocoapods.org). To install it, simply add the following line to your Podfile: ```ruby pod "KingfisherWebP" ``` ### Swift Package Manager From Xcode 11, you can use [Swift Package Manager](https://swift.org/package-manager/) to add KingfisherWebP to your project. The "package repository url" of KingfisherWebP is `https://github.com/yeatse/KingfisherWebP.git`. ![SPM screenshot](spm_screenshot.png) ### Carthage You can also add KingfisherWebP using [Carthage](https://github.com/Carthage/Carthage). Note that KingfisherWebP is built on top of [libwebp](https://chromium.googlesource.com/webm/libwebp) project, so in your `Cartfile` you should add `libwebp` dependency as well: ``` github "yeatse/KingfisherWebP" ~> 1.3.0 github "onevcat/Kingfisher" ~> 6.2.0 github "SDWebImage/libwebp-Xcode" ~> 1.1.0 ``` ## Author Yang Chao, iyeatse@gmail.com ## License KingfisherWebP is available under the MIT license. See the LICENSE file for more info.