菜鸟教程小白 发表于 2022-12-13 04:59:30

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


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

<pre><code>UIImage * flippedImage = ;
</code></pre>

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

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

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

<pre><code>NSNotificationCenter.defaultCenter().addObserver(self, selector: &#34;photoTaken&#34;, name: &#34;_UIImagePickerControllerUserDidCaptureItem&#34;, object: nil)
</code></pre>

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

<pre><code>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)
                                    }
                              }

                            }
                        }
                  }
                }
            }
      }
    }
</code></pre>

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

<pre><code>func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: ) {
      if let pickedImage = info 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)
    }
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 从 iPhone 相机拍照后,图像在预览中翻转,我该如何反转?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/28065232/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/28065232/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 从 iPhone 相机拍照后,图像在预览中翻转,我该如何反转?