您的位置:首页 > 移动开发 > IOS开发

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

2017-03-20 16:37 489 查看
本文实现将一张彩色图片转换为灰色图片。

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

+(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;

}


如有错误请见谅!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios 图片