当我将CIFilter应用于从后置摄像头捕获的图像时,结果是完美的,但当我将CIFilter应用于从前置摄像头捕获的图像时,结果不好,因为图像旋转了,有什么问题吗?
我的过滤器功能如下
func ApplyFilter()->UIImage
{
let ciContext = CIContext(options: nil)
let coreImage = CIImage(image: myImage!)
let filter = CIFilter(name: "CIPhotoEffectNoir" )
filter!.setDefaults()
filter!.setValue(coreImage, forKey: kCIInputImageKey)
let filteredImageData = filter!.valueForKey(kCIOutputImageKey) as! CIImage
let filteredImageRef = ciContext.createCGImage(filteredImageData, fromRect: filteredImageData.extent)
var newImage = UIImage(CGImage: filteredImageRef);
return newImage
}
3条答案
按热度按时间nxagd54h1#
那是因为你的前置摄像头捕捉到了翻转的图像,就像镜子一样。你需要做的是在捕捉图像后固定图像方向。
雨燕3
}
用作
然后对该图像应用CIFilter
rkkpypqq2#
在应用滤镜之前,请确保图像大小意味着宽度应小于高度,因为从前置摄像头拍摄的图像/照片的宽度大于长度,这可能会在应用滤镜后导致问题。https://developer.apple.com/library/content/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/Cameras/Cameras.html
z3yyvxxp3#
Abdul Waheed针对Swift 5.5的解决方案: