图片优化

2021-09-08  本文已影响0人  你飞跃俊杰

一、本地加载
imageWithName是全局,只有在内存警告时可能会释放或者杀死app,图片小且频繁使用的情况下用
imageWithData是局部的,会随着image对象释放,图片大,使用少的情况下用

二、加载优化
大图和掉帧本地图,异步获取,主线程加载

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
      UIImage *image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"testImage" ofType:@"jpeg"]];
      dispatch_async(dispatch_get_main_queue(), ^{
          //业务
      });
});

三、解压优化
耗时解压在子线程用 CGBitmapContextCreate 进行解压

四、超大图:
1.像素过大,需要压缩显示成完整的图片

UIGraphicsBeginImageContext(targetSize);
[originalImage drawInRect:CGRectMake(0, 0, targetSize.width, targetSize.height)];
UIImage *targetImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

2.显示超大图的局部

CGImageRef tmpImage = CGImageCreateWithImageInRect(originalImage, rect);
UIImage *targetImage = [UIImage imageWithCGImage: tmpImage];
CGImageRelease(tmpImage);
上一篇下一篇

猜你喜欢

热点阅读