美颜相机项目或者Photoshop的核心就是图像处理。
想要处理图像,首先需要了解图片是怎么在计算机中实现的,即图片原理。
图片原理
一张图片是由很多具备色彩种类、亮度等级等信息的 基本像素点 所组成的。
每一个像素的颜色由红Red、绿Green、蓝Blue三种基本颜色组成,和美术中的不同。每种颜色的亮度范围是0-255。
颜色的数据大小为1int , 1int = 4 byte = 32bit
颜色1int 表示为二进制 : 0000 0000 0000 0000 0000 0000 0000 0000
其中从右到左: 1-8 位 为 蓝色 ;9-16 位 为 绿色 ;17-24 位 为 红色 ;25-32位 为 透明度
int类型的数据可以直接作为color的参数,当你想使用或者操作其中一种颜色的亮度时该怎么办呢?这时候需要用到位移操作和二进制逻辑运算中的与&操作,将对应颜色位数的值给取出。(位移操作和二进制逻辑运算符不会的小伙伴可以去搜一搜基础的教程呢)
举个例子,当想取出红色的值,即 17-24 位的值。
0000 0000 1000 0000 1000 0000 1000 0000 >> 8 //右移8位
= 0000 0000 0000 0000 1000 0000 1000 0000
0000 0000 0000 0000 1000 0000 1000 0000 & 0000 0000 0000 0000 0000 0000 1111 1111
=