gpt4 book ai didi

ios - UIImageView contentMode 在应用模糊效果后不起作用

转载 作者:搜寻专家 更新时间:2023-10-30 23:00:02 24 4
gpt4 key购买 nike

我正在尝试将 UIImageView 的图像属性设置为我正在使用 CoreImage 进行模糊处理的图像。该代码与未过滤的图像完美配合,但是当我将背景图像设置为过滤后的图像时,contentMode 似乎停止为 UIImageView 工作——而不是纵横比填充,图像变得垂直拉伸(stretch)。除了在代码中设置了contentMode,我还在storyboard上设置了,但是结果是一样的。

我正在使用 Swift 2/Xcode 7。

func updateBackgroundImage(image: UIImage) {
backgroundImage.contentMode = .ScaleAspectFill
backgroundImage.layer.masksToBounds = true
backgroundImage.image = blurImage(image)
}

func blurImage(image: UIImage) -> UIImage {
let imageToBlur = CIImage(image: image)!

let blurfilter = CIFilter(name: "CIGaussianBlur")!
blurfilter.setValue(10, forKey: kCIInputRadiusKey)
blurfilter.setValue(imageToBlur, forKey: "inputImage")

let resultImage = blurfilter.valueForKey("outputImage") as! CIImage
let croppedImage: CIImage = resultImage.imageByCroppingToRect(CGRectMake(0, 0, imageToBlur.extent.size.width, imageToBlur.extent.size.height))
let blurredImage = UIImage(CIImage: croppedImage)

return blurredImage
}

为什么使用 CIImage 过滤会导致我的图像忽略 contentMode,我该如何解决这个问题?

最佳答案

解决方案是更换您的线路:

let blurredImage = UIImage(CIImage: croppedImage)

用这两行:

let context = CIContext(options: nil)
let blurredImage = UIImage (CGImage: context.createCGImage(croppedImage, fromRect: croppedImage.extent))

所以你的完整 blurImage 函数看起来像这样:

func blurImage(image: UIImage) -> UIImage {
let imageToBlur = CIImage(image: image)!

let blurfilter = CIFilter(name: "CIGaussianBlur")!
blurfilter.setValue(10, forKey: kCIInputRadiusKey)
blurfilter.setValue(imageToBlur, forKey: "inputImage")

let resultImage = blurfilter.valueForKey("outputImage") as! CIImage
let croppedImage: CIImage = resultImage.imageByCroppingToRect(CGRectMake(0, 0, imageToBlur.extent.size.width, imageToBlur.extent.size.height))
let context = CIContext(options: nil)
let blurredImage = UIImage (CGImage: context.createCGImage(croppedImage, fromRect: croppedImage.extent))

return blurredImage
}

关于ios - UIImageView contentMode 在应用模糊效果后不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32596264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com