选择时旋转的Swift 2.0 Xcode 7.1图像选择器前置摄像头图像

时间:2016-01-14 16:22:10

标签: xcode swift ios9

我有一个tableview,可以显示带有imageview和标签的人。当一个人插入桌子时,它可以从触点拉出,图像看起来很好。如果未使用联系人添加某个人,则会从文本字段中提取名称,并为相机显示图像选择器。如果我从后置摄像头拍照没有问题。如果我从前置摄像头拍摄照片,则根据屏幕方向关闭照片。即使在拍摄照片时屏幕没有旋转,它也会根据以下内容关闭:

如果方向为纵向,则图像旋转180度。 如果方向是横向左侧,则图像向左旋转90度。 如果方向是颠倒的,则图像向右旋转90度。 如果方向是正确的,那么图像就可以了。

以下是我展示图片选择器的代码:

func pickImage(){
    // create the alert controller, give it three actions: library, camera, cancel
    let pickerAlert = UIAlertController(title: "Add Pic?", message: "Would you like to add a picture for this person?", preferredStyle: .Alert)
    // create the library action
    let libAction = UIAlertAction(title: "Select photo from library", style: .Default) { (alert) -> Void in
        // set picker type to the library and present the picker
        self.picker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
        self.presentViewController(self.picker, animated: true, completion: nil)
    }
    // if the camera is available on the device create the camera action and add it to the picker alert
    if(UIImagePickerController .isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera)){
        let camAction = UIAlertAction(title: "Take a picture", style: .Default) { (alert) -> Void in
            // set picker type to the camera and present the picker
            self.picker.sourceType = UIImagePickerControllerSourceType.Camera
            self.picker.modalPresentationStyle = .FullScreen
            self.presentViewController(self.picker, animated: true, completion: nil)
        }
        pickerAlert.addAction(camAction)
    }
    // create the cancel action, set the person's image to contacts
    let cancel = UIAlertAction(title: "Don't Add Image", style: .Cancel, handler: nil)

    pickerAlert.addAction(libAction)
    pickerAlert.addAction(cancel)

    self.presentViewController(pickerAlert, animated: true, completion: nil)
}

这是我的imagePicker委托:(不包括didCancel,它只是解雇了选择器)

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {
    let imgData = UIImagePNGRepresentation(image)
    saveToList(personName, imgData: imgData!)
    self.tableView.reloadData()
    self.dismissViewControllerAnimated(true, completion: nil)}

当然,我不能将图像转换为PNG数据吗?这些方法也非常基础。我对挑选者没有太多的了解。保存到列表方法只需获取名称和图像数据,并将其存储在我的数据模型中。当我在单元格中检索图像时,我使用人物的图像数据设置了图像视图图像。我已阅读Apple文档中的图像选择器,但似乎无法找到我所缺少的内容: - (

1 个答案:

答案 0 :(得分:5)

交换UIImagePNGRepresentation并改为使用UIImageJPEGRepresentation。 PNG不会自动保存方向信息。除非您正在制作照片质量必须完美的照片专用应用程序,否则JPG很好。

UIImageJPEGRepresentation会询问图像数据,但CGFloat会设置压缩质量。它从0.0到1.0(最好)。

祝你好运!