
基础产品
适用各种通信场景,接入灵活

融合场景
专为场景打造,接入成本低

扩展能力
核心能力延展,功能全面

更多服务
一站式服务,满足各种需求
回答:
如果发现收到了 WEBP 格式的图片无法浏览的时候,需要按照如下方式支持。
创建一个 NSObject的分类
添加这个名字的方法(+ (UIImage )rc_imageWithWebP:(NSData )data;)
例如
#import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface NSObject (RCWebp) + (UIImage *)rc_imageWithWebP:(NSData *)data; @end
3..m 中的方法实现
#import "NSObject+RCWebp.h" #import <WebP/decode.h> #import <WebP/encode.h> static void FreeImageData(void *info, const void *data, size_t size) { free((void *)data); } @implementation NSObject (RCWebp) +(UIImage *)rc_imageWithWebP:(NSData *)data{ NSLog(@"app 来处理 webp 格式的图片"); if (data == nil) { return nil; } return [UIImage rc_imageWithWebPData:data error:nil]; } + (UIImage *)rc_imageWithWebPData:(NSData *)data error:(NSError **)error { WebPDecoderConfig config; if (!WebPInitDecoderConfig(&config)) { return nil; } if (WebPGetFeatures(data.bytes, data.length, &config.input) != VP8_STATUS_OK) { return nil; } config.output.colorspace = config.input.has_alpha ? MODE_rgbA : MODE_RGB; config.options.use_threads = 1; // Decode the WebP image data into a RGBA value array. if (WebPDecode(data.bytes, data.length, &config) != VP8_STATUS_OK) { return nil; } int width = config.input.width; int height = config.input.height; if (config.options.use_scaling) { width = config.options.scaled_width; height = config.options.scaled_height; } // Construct a UIImage from the decoded RGBA value array. CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, config.output.u.RGBA.rgba, config.output.u.RGBA.size, FreeImageData); CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB(); CGBitmapInfo bitmapInfo = config.input.has_alpha ? kCGBitmapByteOrder32Big | kCGImageAlphaPremultipliedLast : 0; size_t components = config.input.has_alpha ? 4 : 3; CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault; CGImageRef imageRef = CGImageCreate(width, height, 8, components * 8, components * width, colorSpaceRef, bitmapInfo, provider, NULL, NO, renderingIntent); CGColorSpaceRelease(colorSpaceRef); CGDataProviderRelease(provider); UIImage *image = [[UIImage alloc] initWithCGImage:imageRef]; CGImageRelease(imageRef); return image; } @end
4.需要导入 WebP.framework ,可自行去网上下载