iOS开发:自定义实现图片变灰
2017-06-07 本文已影响4人
787ea54e5cc5
其实这篇文章和昨天那篇文章差不多,使用自己写的方法替换了openCV的API。其实都一样,介绍了主要方法的实现(替换UIImageToMat(_imageView.image, mat_img_src);)。
![](https://img.haomeiwen.com/i4999080/469b6c9f614a2a1a.png)
一、创建图片工具类,导入openCV头文件
openCV的头文件一定要放在所有的Apple Header之前,详情前一篇有截图。
![](https://img.haomeiwen.com/i4999080/047c8054eb08689a.png)
二:创建颜色空间
第一步:创建一块颜色空间,这里创建的是彩色空间
![](https://img.haomeiwen.com/i4999080/754733b214378fb0.png)
三、根据UIImage对象大小去创建Mat对象
![](https://img.haomeiwen.com/i4999080/717d7e3559645c46.png)
四、创建图片上下文
这一步需要创建一个图形上下文,使用的是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默认排版
![](https://img.haomeiwen.com/i4999080/f24666a186514677.png)
五、绘制
![](https://img.haomeiwen.com/i4999080/b57e58b4c4550eae.png)
![](https://img.haomeiwen.com/i4999080/f08ec80cd56ad291.png)
六、释放上下文和颜色空间所占用的内存
![](https://img.haomeiwen.com/i4999080/992b82ac22838828.png)
demo地址:链接: https://pan.baidu.com/s/1c2IPAGK 密码: wmyf