iOS-WebP

Google's WebP image format decoder and encoder for iOS

  • 所有者: seanooi/iOS-WebP
  • 平台:
  • 許可證: MIT License
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

#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

pod '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.

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

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

- (UIImage *)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

// quality value is [0, 100]
// alpha value is [0, 1]
[UIImage imageToWebP:[UIImage imageNamed:@"demo.jpg"] quality:quality alpha:alpha preset:WEBP_PRESET_DEFAULT completionBlock:^(NSData *result) {
  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  NSString *webPPath = [paths[0] stringByAppendingPathComponent:@"image.webp"];
  if (![result writeToFile:webPPath atomically:YES]) {
    NSLog(@"Failed to save file");
  }
} failureBlock:^(NSError *error) {
  NSLog(@"%@", error.localizedDescription);
}];

#####WebPPreset possible values

  • WEBP_PRESET_DEFAULT (default preset)
  • WEBP_PRESET_PICTURE (digital picture, like portrait, inner shot)
  • WEBP_PRESET_PHOTO (outdoor photograph, with natural lighting)
  • WEBP_PRESET_DRAWING (hand or line drawing, with high-contrast details)
  • WEBP_PRESET_ICON (small-sized colorful images)
  • WEBP_PRESET_TEXT (text-like)
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.

// quality value is [0, 100]
// alpha value is [0, 1]
[UIImage imageToWebP:[UIImage imageNamed:@"demo.jpg"] quality:quality alpha:alpha
 preset:WEBP_PRESET_DEFAULT
 configBlock:^(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;
 }
 completionBlock:^(NSData *result) {
  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  NSString *webPPath = [paths[0] stringByAppendingPathComponent:@"image.webp"];
  if (![result writeToFile:webPPath atomically:YES]) {
    NSLog(@"Failed to save file");
  }
} failureBlock:^(NSError *error) {
  NSLog(@"%@", error.localizedDescription);
}];

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

Converting From WebP

[UIImage imageWithWebP:@"/path/to/file" completionBlock:^(UIImage *result) {
  UIImageView *myImageView = [[UIImageView alloc] initWithImage:result];
}failureBlock:^(NSError *error) {
  NSLog(@"%@", error.localizedDescription);
}];

Setting Image Transparency

//alpha value is [0, 1]
UIImage *transparencyImage = [[UIImage imageNamed:image.jpg] imageByApplyingAlpha:0.5];

Credits

主要指標

概覽
名稱與所有者seanooi/iOS-WebP
主編程語言Objective-C
編程語言Objective-C (語言數: 2)
平台
許可證MIT License
所有者活动
創建於2013-12-21 11:53:58
推送於2023-05-31 12:07:12
最后一次提交2020-04-06 19:26:13
發布數5
最新版本名稱0.5 (發布於 )
第一版名稱0.1 (發布於 )
用户参与
星數857
關注者數35
派生數137
提交數88
已啟用問題?
問題數40
打開的問題數30
拉請求數8
打開的拉請求數2
關閉的拉請求數2
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?