2017-04-24 1 views
0

이미지 선택기 기능을 사용하여 사진을 찍을 때 이미지 방향을 어떻게 바꿀 수 있습니까? imageView를 회전하려고하지 않습니다. 이미지의 방향을 사용하여 imageView에 거꾸로 표시되도록 찍은 이미지를 원합니다.이미지를 변경하는 방법 imagePicker의 방향 (swift3)

errors from answer

+0

currentImageView는 다른 imageViews에 대해 최적의 값입니다. displayImage는 imageView가 1 개뿐이므로 코드를 사용하는 것이 최선의 방법은 아닙니다. 하지만 앞으로는 하나 이상의 imageView를 사용하고 싶습니다. –

+0

이미지를 저장하려고하지 않습니다. 나는 단지 이미지의 방향을 바꾸려고하고있다. 이해에 어려움이있는 부분에 대해 자세히 설명해 주시겠습니까? 감사. –

답변

0

import UIKit 

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 
@IBOutlet var displayImage: UIImageView! 


var currentImageView: UIImageView? 
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
    let image = info[UIImagePickerControllerOriginalImage] as! UIImage 
    self.currentImageView?.image = image 
    self.dismiss(animated: true) 



} 


@IBAction func takePhoto(_ sender: Any) { 


    self.currentImageView = self.displayImage 

    let imagePicker = UIImagePickerController() 
    imagePicker.delegate = self 

    imagePicker.sourceType = UIImagePickerControllerSourceType.camera; 
    imagePicker.allowsEditing = false 
    self.present(imagePicker, animated: true, completion: nil) 

}} 
정말 직접 질문에 대답하기 위해, 당신은 하나는 UIImage 자체를 돌리거나 imageView을 회전 할 수 있습니다. 여기에서는 이미지를 거꾸로 뒤집을 수있는 UIImage의 확장으로 구현할 수있는 함수를 작성했습니다. 사용법이 매우 간단합니다. 컨텍스트가 없어도 찾고있는 것이 맞는지는 알 수 없습니다. 또한 품질이 떨어질 수 있습니다.
public func flipped() -> UIImage { 
    var transform: CGAffineTransform = CGAffineTransform.identity 
    transform = transform.translatedBy(x: self.size.width, y: self.size.height) 
    transform = transform.rotated(by: CGFloat(Double.pi)) 
    guard let cgImage = self.cgImage, let colorSpace = cgImage.colorSpace, let context: CGContext = CGContext(data: nil, width: Int(self.size.width), height: Int(self.size.height), bitsPerComponent: cgImage.bitsPerComponent, bytesPerRow: 0, space: colorSpace, bitmapInfo: CGImageAlphaInfo.premultipliedLast.rawValue) else { return self } 
    context.concatenate(transform) 
    context.draw(cgImage, in: CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height)) 
    guard let transformed = context.makeImage() else { return self } 
    return UIImage(cgImage: transformed) 
} 

UIImage의 확장에 그것을 넣어, 당신이해야 할 모든은 self.currentImageView?.image = image.flipped()UIImagePicker 대리자 메서드 할당을 변경할 수 있습니다 사용할 수 있습니다.

+0

나는 이것이 가까운 것 같지만 4 개의 에러 메시지를 얻고 있다고 생각한다. 나는 당신에게 오류를 보여주기위한 그림을 추가했다. 도와 주셔서 정말 감사합니다. –

+0

@JasonStone 네, 그 함수를 UIImage의 확장에 넣어야합니다. 새로운 빈 파일을 만들고'UIImage {}'라고 입력하면 중괄호 사이에 그 함수가 붙여 넣어지며 (다른 파일에 넣은 파일을 지우면) 작동해야합니다. – creeperspeak

+0

지금이 이미지는 단지 90도 회전되고 있습니다. 270도까지 어떻게 회전시킬 수 있습니까? –