wantedly/iOS-WebP

Name: iOS-WebP

Owner: Wantedly, Inc.

Description: Google's WebP image format decoder and encoder for iOS

Forked from: seanooi/iOS-WebP

Created: 2017-01-27 01:55:22.0

Updated: 2017-01-27 01:55:24.0

Pushed: 2017-11-10 01:33:22.0

Homepage: http://seanooi.github.io/iOS-WebP/

Size: 2367

Language: Objective-C

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

iOS-WebP

Most apps nowadays enhance user experience with the use of images, and one of the issues I've noticed with that is the amount of time it takes to load an image. (Not everyone has the luxury of a fast connection)

Google's WebP image format offers better compression compared to PNG or JPEG, allowing apps to send/retrieve images with smaller file sizes, reducing request times and hopefully provide a better user experience.

alt demo

Getting Started

The CocoaPods Way
'iOS-WebP', '0.5'

Usage

Don't forget to #import <iOS-WebP/UIImage+WebP.h>. There are 3 methods in iOS-WebP, converting images to WebP format, converting images from WebP format, and setting an image's transparency.

oid)imageToWebP:(UIImage *)image quality:(CGFloat)quality alpha:(CGFloat)alpha preset:(WebPPreset)preset
completionBlock:(void (^)(NSData *result))completionBlock
   failureBlock:(void (^)(NSError *error))failureBlock;

oid)imageWithWebP:(NSString *)filePath
  completionBlock:(void (^)(UIImage *result))completionBlock
     failureBlock:(void (^)(NSError *error))failureBlock;

IImage *)imageByApplyingAlpha:(CGFloat)alpha;

Encoding and decoding of images are done in the background thread and results returned in the completion block on the main thread so as not to lock the main thread, allowing the UI to be updated as needed.

Converting To WebP
uality value is [0, 100]
lpha value is [0, 1]
mage imageToWebP:[UIImage imageNamed:@"demo.jpg"] quality:quality alpha:alpha preset:WEBP_PRESET_DEFAULT completionBlock:^(NSData *result) {
Array *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
String *webPPath = [paths[0] stringByAppendingPathComponent:@"image.webp"];
 (![result writeToFile:webPPath atomically:YES]) {
NSLog(@"Failed to save file");

ilureBlock:^(NSError *error) {
Log(@"%@", error.localizedDescription);

WebPPreset possible values Config block

If you need to fine tune the performance of the encoding algorithm you can specify overrides to the preset in a config block.

uality value is [0, 100]
lpha value is [0, 1]
mage imageToWebP:[UIImage imageNamed:@"demo.jpg"] quality:quality alpha:alpha
set:WEBP_PRESET_DEFAULT
figBlock:^(WebPConfig *config) {
config->sns_strength = 50.0f;
config->filter_strength = 0.0f;
config->method = 2;
config->preprocessing = 0;
config->filter_sharpness = 0;
config->thread_level = 1;

pletionBlock:^(NSData *result) {
Array *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
String *webPPath = [paths[0] stringByAppendingPathComponent:@"image.webp"];
 (![result writeToFile:webPPath atomically:YES]) {
NSLog(@"Failed to save file");

ilureBlock:^(NSError *error) {
Log(@"%@", error.localizedDescription);

All possible config values can be found in encode.h in the WebPConfig stuct.

Converting From WebP
mage imageWithWebP:@"/path/to/file" completionBlock:^(UIImage *result) {
ImageView *myImageView = [[UIImageView alloc] initWithImage:result];
lureBlock:^(NSError *error) {
Log(@"%@", error.localizedDescription);

Setting Image Transparency
pha value is [0, 1]
age *transparencyImage = [[UIImage imageNamed:image.jpg] imageByApplyingAlpha:0.5];

Credits


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.