簡體   English   中英

使用CIFilter將濾鏡應用於UIImage和旋轉的圖像

[英]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來解決此問題,但我絕對建議您使用擴展名的switchGithub Sample)語句,因為稍后將照片上傳到服務器時,它也可能會再次更改其方向。

例:

UIImage(CGImage: imageRef, scale: 1.0, orientation: UIImageOrientation.Right)

當圖像高度大於圖像寬度時會出現此問題,因此如果圖像的高度大於寬度,則應在應用CIFilter之前通過相互交換圖像高度和寬度來調整圖像的大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM