iOS-webp

作者: 壮骨 | 来源:发表于2017-08-21 14:37 被阅读0次

    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);

    }];

    相关文章

      网友评论

          本文标题:iOS-webp

          本文链接:https://www.haomeiwen.com/subject/dojylxtx.html