美文网首页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