美文网首页
iOS 修改照片底色

iOS 修改照片底色

作者: 70岁了还要浪 | 来源:发表于2017-07-26 20:07 被阅读97次

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

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