网上搜索了一下,没找的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
}
}
}