iOS 修改照片底色

今天突然有个老同学(美女)让我帮她修改一下照片底色,蓝底变白底,然后下了一个美图秀秀修改了半天还是不理想,于是觉得自己写一个demo来修改照片底色。

- (void)drawImage
{
    CGImageRef cgimage = [self.imageView.image CGImage];
    
    size_t width = CGImageGetWidth(cgimage); // 图片宽度
    size_t height = CGImageGetHeight(cgimage); // 图片高度
    unsigned char *data = calloc(width * height * 4, sizeof(unsigned char)); // 取图片首地址
    size_t bitsPerComponent = 8; // r g b a 每个component bits数目
    size_t bytesPerRow = width * 4; // 一张图片每行字节数目 (每个像素点包含r g b a 四个字节)
    CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB(); // 创建rgb颜色空间
    
    CGContextRef context =
    CGBitmapContextCreate(data,
                          width,
                          height,
                          bitsPerComponent,
                          bytesPerRow,
                          space,
                          kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
    CGContextDrawImage(context, CGRectMake(0, 0, width, height), cgimage);
    
    for (size_t i = 10; i < height; i++)
    {
        for (size_t j = 10; j < width; j++)
        {
            size_t pixelIndex = i * width * 4 + j * 4;
            
            unsigned char red = data[pixelIndex];
            unsigned char green = data[pixelIndex + 1];
            unsigned char blue = data[pixelIndex + 2];
            
            //过滤代码
            if ((red < 0x2f && red> 0x07) && (green < 0xa0 && green> 0x84) && (blue < 0xbf && blue> 0xa8)) {
                //设置成白色
                data[pixelIndex] = 255;
                data[pixelIndex + 1] = 255;
                data[pixelIndex + 2] = 255;
            }
        }
    }
    
    cgimage = CGBitmapContextCreateImage(context);
    self.imageView.image = [UIImage imageWithCGImage:cgimage];
}
屏幕快照 2017-07-26 下午8.05.38.png
屏幕快照 2017-07-26 下午8.05.50.png

处理的效果一般,有些像素点没能过滤掉。

demo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,267评论 4 61
  • 只要今天比昨天好,就是前行路上最大的幸运。 他是一个落了榜的高中生,他不甘命运,重拾理想,想想也不过是恍惚...
    半边爱情阅读 659评论 3 2
  • 以前我特别喜欢能说也喜欢写东西 好像没说完的话表达不出来的感情都能写得出来 后来我不怎么爱说话了也写不出来东西 更...
    ChAnGPeI阅读 282评论 0 0
  • Zin: 好久不见。 今天的故事关于『 毕业 』。 今年寒假是我在大学里的最后一个寒假,刚回到家的一个多星期,我完...
    ZinX阅读 614评论 1 3
  • 我想你 像函数没有了间断 一致连续 我还是很想你 像无法求出的极限 被迫收敛 我喜欢你 像数集没有了确界 无边无际
    零下十度C阅读 404评论 12 4