配置头像 Edit Profile Photo

Step 1: 拍照或者从相册里选择图片

首先 要import UIImagePickerControllerDelegate,
UINavigationControllerDelegate 两个类。

class ViewController: UIViewController,UIImagePickerControllerDelegate,
    UINavigationControllerDelegate{

    @IBOutlet weak var pickedImage: UIImageView!

再调用设置UIImagePickerController

func cameraAction() {
        if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera){
            let imagePicker = UIImagePickerController()
            imagePicker.delegate = self
            imagePicker.sourceType = UIImagePickerControllerSourceType.camera;
            imagePicker.allowsEditing = false
            self.present(imagePicker,animated: true, completion: nil)
        }
        
    }
    
    func libraryAction() {
        if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.photoLibrary){
            let imagePicker = UIImagePickerController()
            imagePicker.delegate = self
            imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary;
            imagePicker.allowsEditing = false
            self.present(imagePicker,animated: true, completion: nil)
        }
    }

最后隐藏照片选择界面,并讲选中的照片设置在 UIImage 里

 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        
         pickedImage.image = info[UIImagePickerControllerOriginalImage] as! UIImage 
        self.dismiss(animated: true, completion: nil)
    }

遇到的问题:
1 通过UIImagePickerControllerDelegate 拍照得到的照片的Orientation 并不是正的(通过UIImage.imageOrientation 查看)而从photo library 里面挑选的照片位置是正的。查阅资料发现iphone 拍照的时候默认的位置是 横着 home键在右侧。

解决:

// swift 3  code:
extension UIImage{
   
    func normalizedImage() -> UIImage {
        
        if (self.imageOrientation == UIImageOrientation.up) {
            return self;
        }
        
        UIGraphicsBeginImageContextWithOptions(self.size, false, self.scale);
        let rect = CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height)
        self.draw(in: rect)
        
        let normalizedImage : UIImage = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext();
        return normalizedImage;
    }
}

(未完待续)

Reference:
http://stackoverflow.com/questions/5427656/ios-uiimagepickercontroller-result-image-orientation-after-upload/10611036#10611036
https://www.cnblogs.com/jiangyazhou/archive/2012/03/22/2412343.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容