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: "photoTaken", name: "_UIImagePickerControllerUserDidCaptureItem", 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]