美文网首页swift 文章收集Swifty Coding
Swift 3 彩色图片置灰/图片灰色显示/去色功能的实现

Swift 3 彩色图片置灰/图片灰色显示/去色功能的实现

作者: 船长_ | 来源:发表于2017-04-24 17:24 被阅读183次

网上搜索了一下,没找的Swift版本,于是照着Objective-C翻译了一遍,给UIImage写了个扩展,现贴出来,供大家参考

    /// 彩色图片置灰,灰度图片
    public func grayImage(sourceImage : UIImage) -> UIImage{
        UIGraphicsBeginImageContext(self.size)
        let colorSpace = CGColorSpaceCreateDeviceGray()
        let context = CGContext(data: nil , width: Int(self.size.width), height: Int(self.size.height),bitsPerComponent: 8, bytesPerRow: 0, space: colorSpace, bitmapInfo: CGImageAlphaInfo.none.rawValue)
        context?.draw(sourceImage.cgImage!, in: CGRect.init(x: 0, y: 0, width: sourceImage.size.width, height: sourceImage.size.height))
        let cgImage = context!.makeImage()
        let grayImage = UIImage.init(cgImage: cgImage!)
        return grayImage
    }

结合Kingfisher 3.0使用示例:

profileImageV.kf.setImage(with: avatar, placeholder: nil, options: nil, progressBlock: nil) { (newImage, error, nil, url) in
    
    if newImage != nil{
        if isOnLine == "1" {
            self.profileImageV.image = newImage?.kf.image(withRoundRadius: 25, fit: CGSize.init(width: 50.0, height: 50.0))
        }else{
            let grayImage = newImage?.grayImage(sourceImage: newImage!)
            let circleImage = grayImage?.kf.image(withRoundRadius: 25, fit: CGSize.init(width: 50.0, height: 50.0))
            self.profileImageV.image = circleImage
        }
    }
}

彩色图片效果

multicolour.png

灰色图片效果

grayColor.png

相关文章

网友评论

    本文标题:Swift 3 彩色图片置灰/图片灰色显示/去色功能的实现

    本文链接:https://www.haomeiwen.com/subject/pbppzttx.html