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

论坛 期权论坛 脚本     
匿名技术用户   2021-1-3 05:47   11   0

// 图片旋转,有时服务器不处理图片,显示客户端时没有正常显示

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

}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP