iOS学习笔记--图片灰度处理

来源:互联网 发布:java todo用法 编辑:程序博客网 时间:2024/05/20 06:26

本文实现将一张彩色图片转换为灰色图片。


方法一:通过自定义方法实现。

+(UIImage*)systemImageToGray:(UIImage*)image{    int width = image.size.width;    int height = image.size.height;    //第一步:开辟颜色空间     CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceGray();    //第二步:创建颜色空间的上下文     CGContextRef contextRef = CGBitmapContextCreate(nil, width, height, 8, 0,colorSpaceRef, kCGImageAlphaNone);    if (contextRef == nil)    {        return nil;    }    //第三步:渲染图片  CGContextDrawImage(contextRef, CGRectMake(0, 0, width, height), image.CGImage);    //第四步:创建图片 将绘制的颜色空间转成CGImage    CGImageRef grayImageRef = CGBitmapContextCreateImage(contextRef);    //第五步:将C/C++图片转成UIImage    UIImage * newImage = [UIImage imageWithCGImage:grayImageRef];    //释放内存    CGColorSpaceRelease(colorSpaceRef);    CGContextRelease(contextRef);    CGImageRelease(grayImageRef);    return newImage;}

方法二:通过openCV框架实现。

#import <opencv2/opencv.hpp>#import <opencv2/imgcodecs/ios.h>
+(UIImage*)imageToGray:(UIImage *)image{    //第一步:将ios平台下的图片-->openCV图片    Mat mat_image_color;    UIImageToMat(image, mat_image_color);    //第二步:将openCV的图片进行灰度处理    Mat mat_image_gray;    //参数三:转换类型    cvtColor(mat_image_color, mat_image_gray, COLOR_RGB2GRAY);    //第三步:将灰色图片转成可现实图片    cvtColor(mat_image_gray, mat_image_color, COLOR_GRAY2RGB);    //第四步:将openCV的图片转成ios图片    UIImage * newImage = MatToUIImage(mat_image_color);    return newImage;}

如有错误请见谅!

0 0