Android ApiDemos示例解析(60):Graphics->ColorMatrix

ColorMatrix 可以用来变换图像中每个像素颜色,可以实现增强对比度,照片底片效果,或者变换不同的颜色空间(比如颜色通常以RGBA表示,但也可以使用YUV来表示),对应于三维坐标系中使用Matrix进行坐标变换,可以把颜色的RGBA当成RGBA 颜色空间中的[r,g,b,a]矢量坐标,ColorMatrix则可以用来对这个[r,g,b,a]进行坐标变换后得到一个新的颜色值,反应到图像上图像的颜色,亮度,透明度就会产生变化。

本例使用了三种不同的Color 变换Matrix: setContrast,setContrastTranslateOnly,setContrastScaleOnly,连上原图一共显示4幅图像:

ColorMatrix的基本使用方法和Matrix类似,可以支持矩阵的加减乘除。定义了ColorMatrix可以使用ColorMatrixColorFilter 来为Canvas设置需要的ColorMatrix:

setContrast(cm, contrast); 
paint.setColorFilter(new ColorMatrixColorFilter(cm)); 
canvas.drawBitmap(mBitmap, x + mBitmap.getWidth() + 10, 
 y, paint);


 

同样onDraw中调用invalidate ,再次触发onDraw形成动画,可以看到图像的对比度不断变化。

你可能感兴趣的:(android,Matrix,照片)