当前位置:  开发笔记 > IOS > 正文

如何像素化和取消UIImage或UIImageview的像素化?

如何解决《如何像素化和取消UIImage或UIImageview的像素化?》经验,为你挑选了1个好方法。

我想像素化和取消像素化UIImageUIImageview使用Swift,但我不知道我该怎么做.

也许使用效果,图层或类似的东西?



1> Luca Angelet..:

这在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)
    }
}

在此输入图像描述

Unpixelation

机制完全相同,您只需要使用不同的过滤器.您可以在此处找到完整的过滤器列表(但请查看每个过滤器可用/需要哪些参数).我认为CIGaussianBlur可以完成这项工作.

当然,不要指望能够输入低分辨率的超像素图像并获得高清晰度图像.此技术仅适用于X-Files:D


蘑菇图像取自这里.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有