【问题标题】:Filter applied to UIImage and rotated image using CIFilter过滤器应用于 UIImage 和使用 CIFilter 旋转的图像
【发布时间】:2016-04-01 17:59:58
【问题描述】:

当我应用到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 中:Stackoverflow answer in obj-c

【问题讨论】:

  • 你能把最终的缩放比例改成UIImageOrientation.Up吗?让我知道发生了什么
  • 我删除了最后一段代码,我应该保留吗?
  • NSChat

标签: ios objective-c swift cifilter


【解决方案1】:

您可以尝试使用UIImageOrientation 来解决此问题,但我绝对推荐带有扩展名的switch (Github Sample) 语句,因为稍后当照片上传到服务器时,它可能还会再次更改其方向.

示例:

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

【讨论】:

    【解决方案2】:

    当图像高度大于图像宽度时会出现此问题,因此如果图像的高度大于宽度,则应在应用 CIFilter 之前通过相互交换图像高度和宽度来调整图像大小....

    【讨论】:

      猜你喜欢
      • 2018-01-29
      • 1970-01-01
      • 2014-09-10
      • 2015-05-12
      • 1970-01-01
      • 1970-01-01
      • 2014-07-14
      • 2011-12-25
      • 2017-09-28
      相关资源
      最近更新 更多