• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 从 iPhone 相机拍照后,图像在预览中翻转,我该如何反转?

[复制链接]
菜鸟教程小白 发表于 2022-12-13 04:59:30 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

当我按下快门按钮后在我的应用中拍照时,图像预览会水平镜像。我知道这样做是为了模仿镜子,但我不希望在我的应用程序上出现这种行为。我希望它像 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap