OStack程序员社区-中国程序员成长平台

标题: ios - 从 iPhone 相机拍照后,图像在预览中翻转,我该如何反转? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 04:59
标题: ios - 从 iPhone 相机拍照后,图像在预览中翻转,我该如何反转?

当我按下快门按钮后在我的应用中拍照时,图像预览会水平镜像。我知道这样做是为了模仿镜子,但我不希望在我的应用程序上出现这种行为。我希望它像 instagram 那样在没有翻转的情况下拍摄前置摄像头照片。我知道如何翻转照片,即:

UIImage * flippedImage = [UIImage imageWithCGImage:picture.CGImage scale:picture.scale orientation:UIImageOrientationLeftMirrored];

但这是我要翻转的预览图像(带有“重拍”和“使用照片”的图像)。任何想法如何去做?我想我需要重写 UIImagePicker 类中的某些内容。

谢谢



Best Answer-推荐答案


我尝试了很多在 stackoverlfow 上描述的答案,但没有一个提供我想要的结果。 Eiter 整个 UIImagePickerViewController 都被转换了,所以相机不直观,不像照镜子,或者像你描述的那样只有图像被转换了,什么工作正常,但你有一个错误的预览中间的图像。所以我最终得到了这个 hack,它绝对不是最佳实践,但适用于 iOS8 和 9,并为我提供了我需要的结果。

确保添加观察者以在按下捕获图像按钮时获得通知:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "photoTaken", name: "_UIImagePickerControllerUserDidCaptureItem", object: nil)

potoTaken 方法中,您可以执行以下操作来查找预览图像并将其转换为您期望的样子:

func photoTaken() {
        for subview in self.imagePicker.view.subviews {
            for subsubview in subview.subviews {
                for subsubsubview in subsubview.subviews {
                    for subsubsubsubview in subsubsubview.subviews {
                        for subsubsubsubsubview in subsubsubsubview.subviews {
                            for subsubsubsubsubsubview in subsubsubsubsubview.subviews {
                                for subsubsubsubsubsubsubview in subsubsubsubsubsubview.subviews {
                                    if subsubsubsubsubsubsubview.isKindOfClass(UIImageView) {
                                        subsubsubsubsubsubsubview.transform = CGAffineTransformScale(self.imagePicker.cameraViewTransform, -1, 1)
                                    }
                                }

                            }
                        }
                    }
                }
            }
        }
    }

在您的 didFinishPickingMediaWithInfo 委托(delegate)中,在保存或显示之前再次翻转图像。

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
        if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {

            let flippedImage = UIImage(CGImage: pickedImage.CGImage!, scale: pickedImage.scale, orientation: .LeftMirrored)

            myCustomPhotoAlbum.sharedInstance.saveImage(flippedImage)
            self.imageView.image = flippedImage
        }

        self.dismissViewControllerAnimated(true, completion: nil)
    }

关于ios - 从 iPhone 相机拍照后,图像在预览中翻转,我该如何反转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28065232/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4