加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift3.0 上传图片旋转问题

发布时间:2020-12-14 06:37:03 所属栏目:百科 来源:网络整理
导读:extension UIImage { func rotate(aImage:UIImage) - UIImage { // 向上 直接返回 if aImage.imageOrientation == .up { return aImage } // 向下M_PI 向左M_PI_2 向右-M_PI_2 var transform: CGAffineTransform = CGAffineTransform.identity switch aImage
extension UIImage {
    func rotate(aImage:UIImage) -> UIImage {
        // 向上 直接返回
        if aImage.imageOrientation == .up {
            return aImage
        }
        
        // 向下M_PI 向左M_PI_2 向右-M_PI_2
        var transform: CGAffineTransform = CGAffineTransform.identity
        switch aImage.imageOrientation {
        case .down,.downMirrored:
            transform = transform.translatedBy(x: aImage.size.width,y: aImage.size.height)
            transform = transform.rotated(by: CGFloat(M_PI))
        case .left,.leftMirrored:
            transform = transform.translatedBy(x: aImage.size.width,y: 0)
            transform = transform.rotated(by: CGFloat(M_PI_2))
        case .right,.rightMirrored:
            transform = transform.translatedBy(x: 0,y: aImage.size.height)
            transform = transform.rotated(by: CGFloat(-M_PI_2))
        default:
            break
        }
        
        switch aImage.imageOrientation {
        case .upMirrored,y: 0)
            transform = transform.scaledBy(x: -1,y: 1)
        case .leftMirrored,.rightMirrored:
            transform = transform.translatedBy(x: aImage.size.height,y: 1)
        default:
            break
        }
        
        //渲染
       
        
        
        let ctx: CGContext = CGContext(data: nil,width: Int(aImage.size.width),height: Int(aImage.size.height),bitsPerComponent: aImage.cgImage!.bitsPerComponent,bytesPerRow: 0,space: aImage.cgImage!.colorSpace!,bitmapInfo: aImage.cgImage!.bitmapInfo.rawValue)!
        ctx.concatenate(transform)
        switch aImage.imageOrientation {
        case .left,.leftMirrored,.right,.rightMirrored:
            
            ctx.draw(aImage.cgImage!,in: CGRect(x: 0,y: 0,width: aImage.size.height,height: aImage.size.width))
        default:
            ctx.draw(aImage.cgImage!,width: aImage.size.width,height: aImage.size.height))
        }
        
        // 新的图片
        let cgimg: CGImage = ctx.makeImage()!
        let img: UIImage = UIImage(cgImage: cgimg)
        return img
        
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读