iOS 图片出现波纹问题

最近维护了一个别人的项目,使用UIImagePickerController拍照屏幕选择图片然后图片出现严重波纹,起初自己方向搞错了,一直以为是压缩图片压缩系数太小而导致的,调整到无损压缩还是没解决问题,然后我就又怀疑对象变成图片服务器进行了压缩,得知后台没有进行压缩,就又开始整理他的逻辑,UIImagePickerConroller 代理


- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<UIImagePickerControllerInfoKey, id> *)info {

    UIImage *img = info[UIImagePickerControllerOriginalImage];    //获取原图

    self.currentPhoto= img;

}


接下来就是把Self.currentPhoto 传到本页面的UIImageView

接着跳转又将这个Self.currentPhoto传到下一页的UIimageView中

出现了问题  下一页的图片显示出现严重波纹

然后分析结果就是:当多个UIImageView不同的尺寸引用同一个UIImage时,会导致图片显示出现波纹情况,多个UIImageView不能使用同一个UIImage对象    

解决方案就是:将UIImage对象进行一个copy传递  这样UIImageView就不会重复拉伸UIImage对象   图像就不会出现失帧问题


还有一种可能是图片太大,UIImageView容器太小造成锯齿现象,需要将UIIMage重新绘制成UIImageView的大小

+ (UIImage*)scaleToSize:(UIImage*)imgsize:(CGSize)size {

  UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);

  [img drawInRect:CGRectMake(0, 0, size.width, size.height)];

  UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();

  UIGraphicsEndImageContext();

  return scaledImage;

}

目前是这样解决的  

纯属自己理解,描述有误欢迎指教

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容