tom

ios UIWebView显示webP格式图片

2018-05-11  本文已影响769人  白雪天枫

首先要有个vpn能够翻墙 
pod 'YYImage'

pod 'YYImage/WebP'

可以实现iOS显示webP格式图片 

#import 《YYImage.h》

NSData * imageData = [NSData dataWithContentsOfURL:url];                YYImageDecoder *decoder = [YYImageDecoder decoderWithData:imageData scale:1.0];

  UIImage *image = [decoder frameAtIndex:0 decodeForDisplay:YES].image;

UIWebView加载webP格式图片

在代理webViewDidFinishLoad里面做处理

- (void)webViewDidFinishLoad:(UIWebView *)webView {

NSString * jsScource = @"\n\nfunction talentcGetAllImageSrc ()\n{\n var imagesList = document.images;\n var srcList = [];\n var patt1 = new RegExp(\"\\.webp$\");\n for(var i = 0; i < imagesList.length; i++) {\n if(patt1.test(imagesList[i].src)) {\n srcList.push(imagesList[i].src);\n }\n }\n return JSON.stringify(srcList);\n};\n\n\n\nfunction talentcReplaceWebPImg (src, localPath)\n{\n var elementList = document.querySelectorAll('img[src=\"'+src+'\"]');\n for(var element in elementList) {\n elementList[element].src = localPath;\n }\n}\n" ;

[webView stringByEvaluatingJavaScriptFromString:jsScource];

//执行JS 获取所有图片

    NSString *jsonString = [webView stringByEvaluatingJavaScriptFromString:@"talentcGetAllImageSrc()"];

NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];

    id json = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil];

    NSArray *imgs = json;

    for (NSString *imgUrl in imgs) {

        if (imgUrl) {

            NSURL *imageURL = [NSURL URLWithString:imgUrl];

            NSData * data = [NSData dataWithContentsOfURL:imageURL];

            YYImageDecoder *decoder = [YYImageDecoder decoderWithData:data scale:1.0];

            UIImage *image= [decoder frameAtIndex:0 decodeForDisplay:YES].image;

            NSData *imageData = UIImageJPEGRepresentation(image,1);

            NSString *base64Image = [NSString stringWithFormat:@"data:%@;base64,%@", @"image/png",

                                    [imageData base64EncodedStringWithOptions: 0]];;

            NSString *jsString = [NSString stringWithFormat:@"talentcReplaceWebPImg('%@','%@')",imageURL,base64Image];

            UIWebView *web = (UIWebView *)self.webView;

            [web stringByEvaluatingJavaScriptFromString:jsString];

        }

    }

}


上一篇 下一篇

猜你喜欢

热点阅读