美文网首页
iOS 图片出现波纹问题

iOS 图片出现波纹问题

作者: Disery | 来源:发表于2023-07-31 15:23 被阅读0次

    最近维护了一个别人的项目,使用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;

    }

    目前是这样解决的  

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

    相关文章

      网友评论

          本文标题:iOS 图片出现波纹问题

          本文链接:https://www.haomeiwen.com/subject/klbepdtx.html