Swift-WebP
Swift Wrapper of libwebp
Target
Swift-WebP aims to deal with image processing flexibly for WebP format in Swift unlike an image loading library; such as SDWebImage. So this library allows you to use many features libwebp has without hassles to use C API from Swift. And also you don't need to install libwebp by yourself if you install this via Carthage. This contains it inside the framework.
Support Versions:
- libwebp: v1.0.3
- iOS Deployment Target: 8.0
- macOS Deployment Target: 10.11
Features
- Support mutiplatform; iOS, macOS, and Linux (swift-docker)
- Support SPM
- Advanced Encoder API - WebPEncoder, WebPEncoderConfig
- Advanced Decoding API - WebPDecoder, WebPDecoderOptions
- Image inspection for WebP files - WebPImageInspector
TODO
- Progressively encoding/decoding option
- Animated WebP
Usage
Encoding
let image = UIImage(named: "demo")
let encoder = WebPEncoder()
let queue = DispatchQueue(label: "me.ainam.webp")
// should encode in background
queue.async {
let data = try! encoder.encode(image, config: .preset(.picture, quality: 95))
// using webp binary data...
}
Decoding
let data: Data = loadWebPData()
let encoder = WebPDecoder()
let queue = DispatchQueue(label: "me.ainam.webp")
// should decode in background
queue.async {
var options = WebPDecoderOptions()
options.scaledWidth = Int(originalWidth / 2)
options.scaledHeight = Int(originalHeight / 2)
let cgImage = try! decoder.decode(data, options: options)
let webpImage = UIImage(cgImage: cgImage)
DispatchQueue.main.async {
self.imageView.image = webpImage
}
}
Example
Please check example projects
Installation
This library won't support CocoaPods. It's difficult to create and maintain podspec files for static libraries. (But contribution for that is always welcome.)
Carthage
Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.
You can install Carthage with Homebrew using the following command:
$ brew update
$ brew install carthage
To integrate WebP into your Xcode project using Carthage, specify it in your Cartfile
:
github "ainame/Swift-WebP"
Run carthage update --use-submodules
to build the framework and drag the built `WebP.framework** into your Xcode project.
Don't forget to use --use-submodules
flag!
Author
ainame
License
Swift-WebP is available under the MIT license. See the LICENSE file for more info.