iOS开发:自定义实现图片变灰

时间:2024-03-23 20:49:22

 

      其实这篇文章和昨天那篇文章差不多,使用自己写的方法替换了openCV的API。其实都一样,介绍了主要方法的实现(替换UIImageToMat(_imageView.image, mat_img_src);)。

iOS开发:自定义实现图片变灰

图1、所替换的方法

一、创建图片工具类,导入openCV头文件

openCV的头文件一定要放在所有的Apple Header之前,详情前一篇有截图。

iOS开发:自定义实现图片变灰

图2、类与头文件

二:创建颜色空间

第一步:创建一块颜色空间,这里创建的是彩色空间

iOS开发:自定义实现图片变灰

图3、创建颜色空间

三、根据UIImage对象大小去创建Mat对象

 

iOS开发:自定义实现图片变灰

图4、创建openCV图片

四、创建图片上下文

       这一步需要创建一个图形上下文,使用的是Core graphic框架中的:CG_EXTERNCGContextRef__nullableCGBitmapContextCreate(void*__nullabledata,

size_twidth,size_theight,size_tbitsPerComponent,size_tbytesPerRow,

CGColorSpaceRefcg_nullablespace,uint32_tbitmapInfo),目的是保存图片信息。

        这个接口的参数比较多,其中。

参数一:数据源

参数二:图片宽

参数三:图片高

参数四:每一个像素占用多大的内存,一个像素点由RGB组成(R:8位G:8位B:8位),即三个字节

参数五:每一行所占用的内存m.step[0]第一行多大内存

参数六:颜色空间

参数七:位图信息 这里使用kCGImageAlphaNoneSkipLast表示没有透明度分量

kCGBitmapByteOrderDefault默认排版

iOS开发:自定义实现图片变灰

图5、创建的图形上下文

五、绘制

iOS开发:自定义实现图片变灰

图6、绘制图片

 

iOS开发:自定义实现图片变灰

图7、参数

六、释放上下文和颜色空间所占用的内存

 

iOS开发:自定义实现图片变灰

图8、释放内存

demo地址:链接: https://pan.baidu.com/s/1c2IPAGK 密码: wmyf