iOS改变图片的颜色

作者: 雪山飞狐_91ae | 来源:发表于2018-05-30 22:18 被阅读37次

    在做项目的时候碰到了一个需求,就是设计做的图片的颜色和需求不符合,需要把图片的颜色改变一下。下面是改变图片颜色的方法。
    首先我们创建一个UIImage的Category,名为ChangeColor。这个名为ChangeColor的Category只有一个方法,即-(UIImage*)imageChangeColor:(UIColor*)color。这个方法的具体实现如下:

    #import "UIImage+ChangeColor.h"
    
    @implementation UIImage (ChangeColor)
    
    //绘图
    -(UIImage*)imageChangeColor:(UIColor*)color
    {
        //获取画布
        UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0f);
        //画笔沾取颜色
        [color setFill];
        
        CGRect bounds = CGRectMake(0, 0, self.size.width, self.size.height);
        UIRectFill(bounds);
        //绘制一次
        [self drawInRect:bounds blendMode:kCGBlendModeOverlay alpha:1.0f];
        //再绘制一次
        [self drawInRect:bounds blendMode:kCGBlendModeDestinationIn alpha:1.0f];
        //获取图片
        UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return img;
    }
    @end
    

    使用方法:
    首先我们看一下不改变颜色时,真实的图片颜色

    UIImage *image = [UIImage imageNamed:@"qr-code"];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    [imageView setFrame:CGRectMake(100, 100, 100, 100)];
    [self.view addSubview:imageView];
    

    得到的图片:


    原图.png

    然后我们改变图片的颜色为绿色:

    UIImage *image = [UIImage imageNamed:@"qr-code"];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:[image imageChangeColor:[UIColor blueColor]]];
    [imageView setFrame:CGRectMake(100, 100, 100, 100)];
    [self.view addSubview:imageView];
    

    运行结果:


    改变颜色.png

    相关文章

      网友评论

        本文标题:iOS改变图片的颜色

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