SDWebImage 可以实现加载webp 需要 pod ’SDWebImage/WebP’
关于SDWebImage 加载 webp 的性能http://www.cnblogs.com/lizheng114/p/6582352.html
注意: SDWebImage在对WebP做存储的时候,存的是未解码的NSData,而不是解码后的NSData,
iOS-WebP (分类) 注意:pod SDWebImage/Webp 之后 可以直接拉取两个分类使用 如果没有 需要 pod ‘iOS-WebP’ (有一些依赖库)
下载地址:https://github.com/seanooi/iOS-WebP/zipball/master
iOS-WebP :使用注意
其他图片转webp 时 需要注意 不要用压缩之后的图片 否则会导致转换出来的webp图片颜色失真
如果是使用 PHAsset 转换出Image 建议不用下面这个方法 这个方法的Block会调用多次(系统解析时 从不清晰到清晰(live图片的原因),可以配置Options来符合需求) 而且默认就会压缩尺寸 即使设置的targetSize 和 PHAssetSize 一致 最后使用该图片转webp时 还是会失真
PHAsset转UIImage建议使用这种 将PHAsset 转成 NSData 再将NSData 转成 image 最后用image转成webp (实现原图转webp ,最后的webp图片 比原图小 %60以上,更有效的避免了图片转webp时的失真)
配置options PHAsset转NSdata基础方法
加强方法
其他图片转webp
// quality value is [0, 100]
// alpha value is [0, 1]
[UIImageimageToWebP:[UIImageimageNamed:@"demo.jpg"]quality:qualityalpha:alphapreset:WEBP_PRESET_DEFAULTcompletionBlock:^(NSData*result) {
NSArray*paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);
NSString*webPPath = [paths[0]stringByAppendingPathComponent:@"image.webp"];
if(![resultwriteToFile:webPPathatomically:YES]) {
NSLog(@"Failed to save file");
}
}failureBlock:^(NSError*error) {
NSLog(@"%@", error.localizedDescription);
}];
转webp 性能加强
[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(![resultwriteToFile:webPPathatomically:YES]) {
NSLog(@"Failed to save file");
}
}failureBlock:^(NSError*error) {
NSLog(@"%@", error.localizedDescription);
}];
网友评论