使用上傳這個共同的功能從任何修復上攻形象定位之前。
extension UIImage {
func fixImageOrientation() -> UIImage? {
if (self.imageOrientation == .up) {
return self
}
var transform: CGAffineTransform = CGAffineTransform.identity
if (self.imageOrientation == .left || self.imageOrientation == .leftMirrored) {
transform = transform.translatedBy(x: self.size.width, y: 0)
transform = transform.rotated(by: CGFloat(Double.pi/2.0))
} else if (self.imageOrientation == .right || self.imageOrientation == .rightMirrored) {
transform = transform.translatedBy(x: 0, y: self.size.height);
transform = transform.rotated(by: CGFloat(-Double.pi/2.0));
} else if (self.imageOrientation == .down || self.imageOrientation == .downMirrored) {
transform = transform.translatedBy(x: self.size.width, y: self.size.height)
transform = transform.rotated(by: CGFloat(Double.pi))
} else if (self.imageOrientation == .upMirrored || self.imageOrientation == .downMirrored) {
transform = transform.translatedBy(x: self.size.width, y: 0)
transform = transform.scaledBy(x: -1, y: 1)
} else if (self.imageOrientation == .leftMirrored || self.imageOrientation == .rightMirrored) {
transform = transform.translatedBy(x: self.size.height, y: 0);
transform = transform.scaledBy(x: -1, y: 1);
}
if let context: CGContext = 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) {
context.concatenate(transform)
if (self.imageOrientation == UIImageOrientation.left ||
self.imageOrientation == UIImageOrientation.leftMirrored ||
self.imageOrientation == UIImageOrientation.right ||
self.imageOrientation == UIImageOrientation.rightMirrored) {
context.draw(self.cgImage!, in: CGRect(x: 0,y: 0,width: self.size.height,height: self.size.width))
} else {
context.draw(self.cgImage!, in: CGRect(x: 0,y: 0,width: self.size.width,height: self.size.height))
}
if let contextImage = context.makeImage() {
return UIImage(cgImage: contextImage)
}
}
return nil
}
}
圖像如何保存在服務器上,其存儲的在90度或保存在正常 –
當u拿手機的攝像頭,該圖像具有方向屬性本身。因此,請按照該方向檢查並旋轉併發送到服務器。很多可用的網絡代碼都可以自己編寫。 – Ammaiappan
你可以在這裏查看我的答案https://stackoverflow.com/questions/45157225/want-fixed-orientation-but-the-uiimage-autoratate/45157920#45157920 – luckyShubhra