当前位置:首页 > Android群英传笔记 - 第六章:Android绘图机制与处理技巧(二)
Android群英传笔记——第五章:
Android Scroll分析(二)
-3.浮雕效果 ??
B.r = C.r - B.r + 127; B.g = C.g - B.g + 127; B.b = C.b - B.b + 127;
六.Android图像处理之图像特效处理
我们也了解了老半天的色彩处理效果,接下来我们再来探索一下图像方面的处理技巧 1.Android变形矩阵——Matrix
对于图像的处理,Android系统提供了ColorMatrix颜色矩阵来帮助我们进行图像处理,而对于图像的图形变换,Android系统也可以通过矩阵来帮忙,每个像素点都表达了其xy的信息,Android的变化就是一个3X3的矩阵
当使用变换矩阵去处理每一个像素点的时候,与颜色矩阵的算法公司其实是一样的 X1 = a x X +b x Y +c; Y1 = d x X +e x Y +f; 1 = g x X +hx Y + i;
通常情况下,会让g = h = 0,i = 1;这样使1 = g x X + h x Y + i恒成立,因此只需要关注这几个参数就行
与色彩变换矩阵的初始化矩阵一样,图形变换矩阵也需要一个初始矩阵,很明显就是对角线元素,其他元素为0的矩阵
图像的变形处理包含以下四类基本变换 Translate——平移变换
Rotate——旋转变换 Scale——缩放变换 Skew——错切变换 -1.平移变换
我们先看一张图
平移变换的坐标就如图,即将每个点的像素点进行平移变换,当p(x0,y0)平移到p(x,y)时,坐标发生了如下的变化 X = X0 + ^X; Y = Y0 + ^Y;
通过计算我们可以发现如下等式 X = X0 + ^X; Y = Y0 + ^Y;
这就是我们前面所说的实现平移的平移公式 -2.旋转变换
选择变换实际上就是一个点围绕一个中心旋转到一个新的点上
前面是以坐标原点为旋转中心旋转变换,如果以任一点0为旋转中心进行旋转变换,通常需要以下三个步骤
将坐标原点平移到0点
使用前面讲的以坐标原点为中心的旋转方法进行旋转变换 将坐标原点还原
通过上述三个步骤,就可以以任一点进行旋转了 -3.缩放变换
一个像素点是不存在缩放的概念的,但是由于图像是由很多人像素点组成,如果将每个像素点的坐标都进行相同比例的缩放,最终就会形成让整个图像缩放的效果,缩放效果的计算公式
x = K1 X x0; y = K2 X y0;
如果写成矩阵的话
通过计算,就可以还原上述等式了 -4.错切变换
错切变换(skew)在数学上又称为Shear mapping(可译为“剪切变换”),或者Transvection(缩并),它是一种比较特殊的线性变换,错切变换的效果就是让所有的X坐标标尺不变,一般分水平和垂直
处置错切就不画了
在了解了矩阵变换规律之后,通过类似多彩矩阵中模拟矩阵的例子来模拟变形矩阵,整个代码与模块颜色矩阵所使用的代码基本一致,在图形变换,同样是通过了一个一位数组将一个一位数组转换为变换矩阵
private float [] mImageMatrix = new float[9]; Matrix matrix = new Matrix(); matrix.setValues(mImageMatrix);
canvas.drawBitmap(mBitmmap,matrix,null);
后面一小部分不写 2.像素块分析
与我们当初了解色彩的处理效果时类似,使用了颜色矩阵和像素点处理两种方式来进行图像处理,这里在进行图像的处理方式也有两种,即前面讲的使用矩阵来进行图像变换和马上要使用到的drawBitmapMesh()方法来处理,操作像素块的原理,该方法如下
canvas.drawBitmapMesh(Bitmap bitmap,int meshWidth,int meshHeight,float [] verts,int
共分享92篇相关文档