【问题标题】:Blur UIImage not clipping (Swift)模糊 UIImage 不裁剪(Swift)
【发布时间】:2015-06-30 19:47:13
【问题描述】:

我有下面的代码来模糊 UIImageView 中的图像。然后它将该图像放入 UIImageView。 在应用模糊效果之前,图像剪辑并设置为ScaleAspectFill,但一旦应用效果,它就会拉伸图像。我哪里错了?

谢谢

let rectangle = UIImageView(frame: CGRectMake(xPosPix+100, yPosPix, widthPix, heightPix))

rectangle.contentMode = UIViewContentMode.ScaleAspectFill
rectangle.frame = CGRectMake(xPosPix+100, yPosPix, widthPix, heightPix)
rectangle.layer.opacity = opacity
rectangle.layer.cornerRadius = cornerRadius
rectangle.clipsToBounds = true
self.view.addSubview(rectangle)

var image = rectangle.image
var imageToBlur = CIImage(image: image)
var blurfilter = CIFilter(name: "CIGaussianBlur")
blurfilter.setValue(imageToBlur, forKey: "inputImage")
var resultImage = blurfilter.valueForKey("outputImage") as! CIImage
var blurredImage = UIImage(CIImage: resultImage)
rectangle.layer.cornerRadius = cornerRadius
rectangle.clipsToBounds = true
rectangle.image = blurredImage

【问题讨论】:

  • 请问你为什么不直接使用内置的BlurEffectView
  • 我正在使用 Parse.com,我需要使用 Parse.com 中的图像创建效果
  • 所以?你仍然可以使用内置的。只需将 BlurView 放在更高的 z 上即可。
  • 我也不希望 BlueView 具有黑/白颜色。我希望它看起来像图像模糊。

标签: ios swift uiimageview uiimage cifilter


【解决方案1】:

我想你可能想要

rectangle.layer.masksToBounds = true;

而不是第二个

rectangle.clipsToBounds = true

此外,如果您使用 layoutConstraints,它们喜欢弄乱圆角半径。如果是这种情况,请尝试在 layoutSubviews 中设置圆角半径属性

【讨论】:

  • 这似乎是导致问题的ScaleAspectFill 部分。它正在拉伸/压缩图像,而不是像往常那样将其拟合到最短的一侧。
  • 我可能错了,但在我看来,您正在寻找 .ScaleAspectFit 而不是 .ScaleAspectFill
猜你喜欢
  • 1970-01-01
  • 2014-11-03
  • 1970-01-01
  • 2018-07-08
  • 2010-09-14
  • 1970-01-01
  • 1970-01-01
  • 2014-02-04
  • 1970-01-01
相关资源
最近更新 更多