我想像素化和取消像素化UIImage
或UIImageview
使用Swift,但我不知道我该怎么做.
也许使用效果,图层或类似的东西?
这在iOS上是一项非常简单的任务.
您可以使用CIPixellate核心图像过滤器.
func pixellated(image: UIImage) -> UIImage? { guard let ciImage = CIImage(image: image), filter = CIFilter(name: "CIPixellate") else { return nil } filter.setValue(ciImage, forKey: "inputImage") guard let output = filter.outputImage else { return nil } return UIImage(CIImage: output) }
结果
默认inputScale
值为8
.但是,您可以手动设置参数来增加或减少效果.
filter.setValue(8, forKey: "inputScale") // ^ // change this
您还可以定义以下扩展名
extension UIImage { func pixellated(scale: Int = 8) -> UIImage? { guard let ciImage = UIKit.CIImage(image: self), filter = CIFilter(name: "CIPixellate") else { return nil } filter.setValue(ciImage, forKey: "inputImage") filter.setValue(scale, forKey: "inputScale") guard let output = filter.outputImage else { return nil } return UIImage(CIImage: output) } }
机制完全相同,您只需要使用不同的过滤器.您可以在此处找到完整的过滤器列表(但请查看每个过滤器可用/需要哪些参数).我认为CIGaussianBlur可以完成这项工作.
当然,不要指望能够输入低分辨率的超像素图像并获得高清晰度图像.此技术仅适用于X-Files:D
蘑菇图像取自这里.