[iOS]给图片绘制渲染色

我们有时候需要给图片上绘制一层渲染色,虽然可以在控件上添加一层视图,但是这种做法效率很低,不如直接把图片绘制为带有渲染色的图片来得好
代码:

    func tintedImageWithColor(color: UIColor, originalityImage: UIImage!) -> UIImage {
        //创建图片位置大小
        let imageRect = CGRect(x: 0.0, y: 0.0, width: originalityImage.size.width, height: originalityImage.size.height)
        
        //设置绘制图片上下文
        UIGraphicsBeginImageContextWithOptions(imageRect.size, false, originalityImage.scale)
        //得到上下文
        let context = UIGraphicsGetCurrentContext()
        //绘制图片
        originalityImage.drawInRect(imageRect)
        //设置渲染颜色
        CGContextSetFillColorWithColor(context, color.CGColor)
        //设置透明度(值可根据需求更改)
        CGContextSetAlpha(context, 0.5)
        //设置混合模式
        CGContextSetBlendMode(context, CGBlendMode.SourceAtop)
        //设置位置大小
        CGContextFillRect(context, imageRect)
        
        //绘制图片
        let imageRef = CGBitmapContextCreateImage(context)
        let darkImage = UIImage(CGImage: imageRef!, scale: originalityImage.scale, orientation: originalityImage.imageOrientation)
        
        //完成绘制
        UIGraphicsEndImageContext()
        return darkImage
    }

来使用一下吧

        let imageView = UIImageView(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
        view.addSubview(imageView)
        
        let image = UIImage(named: "crab.JPG")
        imageView.image = image

原图如下:

[iOS]给图片绘制渲染色_第1张图片
Simulator Screen Shot 2016年4月23日 下午5.55.15.png

设置图片渲染色后:

var image = UIImage(named: "crab.JPG")
        image = tintedImageWithColor(UIColor.greenColor(), originalityImage: image)
        imageView.image = image

效果如下:

[iOS]给图片绘制渲染色_第2张图片
Simulator Screen Shot 2016年4月23日 下午5.59.06.png

你可能感兴趣的:([iOS]给图片绘制渲染色)