2017-05-18 10 views
1

그래서이 기능 저장 .leftMirrored 방향과 사진 문제

let leftMirroredImage = UIImage(cgImage: myImage.cgImage!, scale: myImage.scale, orientation: UIImageOrientation.leftMirrored) 

UIImageWriteToSavedPhotosAlbum(myImage, nil, nil, nil) 
UIImageWriteToSavedPhotosAlbum(leftMirroredImage, nil, nil, nil) . 

하지만 어떤 이유로

, 내가 사진 응용 프로그램에서 볼 때 leftMirroredImage가 끊어지고를 사용하여 두 개의 사진을 저장하고있다. 너무 enter image description here입니다.

여기에서 나는 또한 사진 .upMirrored , .downMirrored, and .rightMirrored으로 그렇게 잘라 얻을 것이다 것으로 나타났습니다 enter image description here

저장 한 정상 이미지입니다. 왜 이런 일이 일어나는 지 아십니까?

답변

1

당신은 수평 이미지 플립 CIFilter "CIAffineTransform"를 사용하고 -1에 의해 이미지의 X 스케일을 곱할 수 :

let image = UIImage(data: try! Data(contentsOf: URL(string:"https://i.stack.imgur.com/Xs4RX.jpg")!))! 
let transform = CGAffineTransform(scaleX: -1, y: 1) 
if let ciimage = CIImage(image: image), 
    let flipped = CIFilter(name: "CIAffineTransform", withInputParameters: [kCIInputImageKey: ciimage, kCIInputTransformKey: NSValue(cgAffineTransform: transform)])?.outputImage { 
    let image = UIImage(ciImage: flipped) 
    UIGraphicsBeginImageContextWithOptions(image.size, false, image.scale) 
    image.draw(in: CGRect(origin: .zero, size: image.size)) 
    let flippedUIImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
}