• iOS开发之UIImage黑白处理


    //通过修改图片饱和度将图片变为黑白(镂空位置不影响)

    - (UIImage*) convertImageToGreyScale:(UIImage*) image

    {

        CIImage *beginImage = [CIImage imageWithCGImage:image.CGImage];

        CIFilter * filter = [CIFilter filterWithName:@"CIColorControls"];

        [filter setValue:beginImage forKey:kCIInputImageKey];

        //饱和度 0---2 默认为1

        [filter setValue:[NSNumber numberWithFloat:0] forKey:@"inputSaturation"];

        // 得到过滤后的图片

        CIImage *outputImage = [filter outputImage];

        // 转换图片, 创建基于GPU的CIContext对象

        CIContext *context = [CIContext contextWithOptions: nil];

        CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];

        UIImage *newImg = [UIImage imageWithCGImage:cgimg];

        // 释放C对象

        CGImageRelease(cgimg);

        return newImg;

    }

    //将图片变为黑边反转(镂空部位为黑色)

    - (UIImage*) convertImageToGreyScale:(UIImage*) image {

      CGRect imageRect = CGRectMake(0, 0, image.size.width, image.size.height);

      CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();

      CGContextRef context = CGBitmapContextCreate(nil, image.size.width, image.size.height, 8, 0, colorSpace, kCGImageAlphaNone);

      CGContextDrawImage(context, imageRect, [image CGImage]);

      CGImageRef imageRef = CGBitmapContextCreateImage(context);

      UIImage *newImage = [UIImage imageWithCGImage:imageRef];

      CGColorSpaceRelease(colorSpace); CGContextRelease(context);

      CFRelease(imageRef);

      return newImage;

    }

  • 相关阅读:
    权限设计
    ts infer关键字
    Array初始化 以及 Array.prototype.map()的一些问题
    同步、异步、事件循环
    Spring学习笔记(一)
    【面试】关于get和post两种方法的不同。
    【算法】背包问题
    当你在浏览器输入一个网址(如http://www.taobao.com),按回车之后发生了什么?
    数据库语句复习笔记
    【算法】雀魂启动(笔试题)
  • 原文地址:https://www.cnblogs.com/hecanlin/p/13468354.html
Copyright © 2020-2023  润新知