ios UIWebView显示webP格式图片
首先要有个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];
}
}
}