![](/img/trans.png)
[英]iOS: When applying a CIFilter to a UIImage the result image is rotated
[英]Filter applied to UIImage and rotated image using CIFilter
當我將UIImage
應用於過濾器時,圖像的結果是圖像被旋轉了! 我已經試過了:
var filterNames: [String] = ["CIPhotoEffectTonal","CIPhotoEffectNoir","CIMaximumComponent","CIMinimumComponent","CIDotScreen", "CISepiaTone", "CIFalseColor", "CIColorInvert", "CIColorPosterize", "CIPhotoEffectChrome", "CIPhotoEffectInstant"]
let CIfilterName = filterNames[indexPath.row]
print(CIfilterName)
let ciContext = CIContext(options: nil)
let startImage = CIImage(image: originalImage)
let filter = CIFilter(name: CIfilterName)
filter!.setDefaults()
filter!.setValue(startImage, forKey: kCIInputImageKey)
let filteredImageData = filter!.valueForKey(kCIOutputImageKey) as! CIImage
let filteredImageRef = ciContext.createCGImage(filteredImageData, fromRect: filteredImageData.extent)
let originalOrientation: UIImageOrientation = (imageView.image?.imageOrientation)!
let originalScale: CGFloat = (imageView.image?.scale)!
let newPtImage: UIImage = UIImage.imageWithCGImage(filteredImageRef, scale: originalScale, orientation: originalOrientation)
imageView.image = newPtImage
imageView.image = UIImage(CGImage: filteredImageRef);
比例尺的最后一部分是我嘗試過的部分,但是我正在顯示代碼的那部分,以便您可以看到我做錯了什么或不知道做什么。
我找到了這個答案,但這是在Objective-c中: obj-c中的Stackoverflow答案
您可以嘗試使用UIImageOrientation
來解決此問題,但我絕對建議您使用擴展名的switch
( Github Sample)語句,因為稍后將照片上傳到服務器時,它也可能會再次更改其方向。
UIImage(CGImage: imageRef, scale: 1.0, orientation: UIImageOrientation.Right)
當圖像高度大於圖像寬度時會出現此問題,因此如果圖像的高度大於寬度,則應在應用CIFilter之前通過相互交換圖像高度和寬度來調整圖像的大小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.