zoukankan      html  css  js  c++  java
  • 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;

    }

  • 相关阅读:
    linux下mysql安装
    出现GC overhead limit exceeded 的解决方案
    什么是OOM?如何解决OOM问题!
    老司机告诉你:别再被忽悠,汽车节气门这样洗最养车
    HDU 4352 XHXJ's LIS(数位dp&状态压缩)
    Linux bash: scp: command not found的问题记录
    Codeforces Round #315 (Div. 2)
    【营销】非常重要
    firebug的应用
    powerdesigner中实现PDM到MYSQl数据库的转换
  • 原文地址:https://www.cnblogs.com/hecanlin/p/13468354.html
Copyright © 2011-2022 走看看