滤镜原理
滤镜效果其实就是把一张图片的所有像素点按照颜色矩阵来进行处理。颜色矩阵是一个5x4额矩阵,以一维数组的方式存储,可以用来修改图片中RGBA各分量的值。
[ a, b, c, d, e,
f, g, h, i, j,
k, l, m, n, o,
p, q, r, s, t ],
这个矩阵对颜色的作用计算方式如下:
R' = a*R + b*G + c*B + d*A + e;
G' = f*R + g*G + h*B + i*A + j;
B' = k*R + l*G + m*B + n*A + o;
A' = p*R + q*G + r*B + s*A + t;
其中R,G,B,A,代表原图的RGBA数值。
所以,颜色矩阵中,第一行决定红色,第二行决定绿色,第三行决定蓝色,第四行决定了透明度,第五列是颜色的偏移量。如下一些经典模式:
1、创建位图上下文
CGImageRef :是一个结构体指针。这个结构用来创建像素位图,可以通过操作存储的像素位来编辑图片。
位图(Bitmap):是Windows标准格式图形文件,它将图像定义为由点(像素)组成,每个点可以由多种色彩表示,包括2、4、8、16、24和32位色彩。
例如,一幅1024×768分辨率的32位真彩图片,其所占存储字节数为:1024×768×32/(8*1024)=3072KB
2. 获取图像中的RGBA值
3. 根据颜色矩阵,修改每个像素的RGBA值
由于RGBA 是 0--255之间的数值,所以小于0和大于255,下面都简单粗暴处理。
4、修改图片像素并输出
通过这种像素处理图片,就可以出现美图秀秀中的模式选择;
喜欢的请点关注,代码后期会传到github上面。
喜欢的给颗🌟
代码:https://github.com/JalynnXi/imageFilter