您的位置:首页 > 移动开发 > Swift

swift-image上传图片时需要旋转在上传服务器代码

2017-07-02 19:04 453 查看
// 图片旋转,有时服务器不处理图片,显示客户端时没有正常显示

    func fixOrientation() ->
UIImage {

        if
self.imageOrientation == .up {

            return
self

        }

        

        var transform =
CGAffineTransform.identity

        

        switch
self.imageOrientation {

        case .down, .downMirrored:

            transform = transform.translatedBy(x:
self.size.width, y:
self.size.height)

            transform = transform.rotated(by: .pi)

            break

            

        case .left, .leftMirrored:

            transform = transform.translatedBy(x:
self.size.width, y:
0)

            transform = transform.rotated(by: .pi /
2)

            break

            

        case .right, .rightMirrored:

            transform = transform.translatedBy(x:
0, y: self.size.height)

            transform = transform.rotated(by: -.pi /
2)

            break

            

        default:

            break

        }

        

        switch
self.imageOrientation {

        case .upMirrored, .downMirrored:

            transform = transform.translatedBy(x:
self.size.width, y:
0)

            transform = transform.scaledBy(x:
-1, y: 1)

            break

            

        case .leftMirrored, .rightMirrored:

            transform = transform.translatedBy(x:
self.size.height, y:
0);

            transform = transform.scaledBy(x:
-1, y: 1)

            break

            

        default:

            break

        }

        

        let ctx =
CGContext(data: nil, width:
Int(self.size.width), height:
Int(self.size.height), bitsPerComponent:
self.cgImage!.bitsPerComponent, bytesPerRow:
0, space: self.cgImage!.colorSpace!,
bitmapInfo: self.cgImage!.bitmapInfo.rawValue)

        ctx?.concatenate(transform)

        

        switch
self.imageOrientation {

        case .left, .leftMirrored, .right,
.rightMirrored:

            ctx?.draw(self.cgImage!, in:
CGRect(x: CGFloat(0), y:
CGFloat(0), width:
CGFloat(size.height), height:
CGFloat(size.width)))

            break

            

        default:

            ctx?.draw(self.cgImage!, in:
CGRect(x: CGFloat(0), y:
CGFloat(0), width:
CGFloat(size.width), height:
CGFloat(size.height)))

            break

        }

        

        let cgimg:
CGImage = (ctx?.makeImage())!

        let img =
UIImage(cgImage: cgimg)

        

        return img

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐