Android图像处理:Matrix详解与应用

5星 · 超过95%的资源 需积分: 9 10 下载量 70 浏览量 更新于2024-07-27 收藏 560KB DOC 举报
"Android图片处理矩阵详细 - 学习Android图像处理中的Matrix操作" 在Android开发中,图片处理是一项常见的任务,而Matrix类是Android提供的一个关键工具,用于执行各种图像变换,如平移、旋转、缩放和倾斜。Matrix类的操作主要包含translate、rotate、scale和skew四种,每种变换都有set、post和pre三种方法。 1. **translate(平移)** 平移是最简单的变换,它将图像在X和Y轴上移动指定的距离。例如,`m.postTranslate(x, y)`会将图像沿X轴移动x像素,沿Y轴移动y像素。平移不涉及旋转或缩放中心点,因为它只影响图像的整体位置。 2. **rotate(旋转)** 旋转操作允许图像围绕一个点进行旋转。在Android中,`m.postRotate(degrees)`会以当前矩阵为基础,将图像顺时针旋转degrees度。如果需要指定旋转中心,可以使用`setRotate()`并传入中心点的坐标。 3. **scale(缩放)** 缩放操作可以改变图像的大小。`m.postScale(sx, sy)`会按照X轴的sx和Y轴的sy比例缩放图像。同样,`setScale()`允许指定缩放的中心点,以实现非均匀缩放。 4. **skew(倾斜)** 倾斜操作使图像沿X轴和Y轴产生扭曲。`m.postSkew(kx, ky)`会使图像沿X轴倾斜kx个单位,沿Y轴倾斜ky个单位。这可以用来创建透视效果或其他特殊视觉效果。 每种操作都有set、post和pre的区别: - **set** 方法会直接替换Matrix的当前值,因此之前的任何变换都会被覆盖。 - **post** 方法是后乘操作,它将新变换矩阵与当前矩阵相乘,这样可以累积多个变换。例如,先旋转后平移,图像会先旋转30度,然后再移动到(100,100)。 - **pre** 方法则是前乘操作,与post相反,它会先应用新的变换,再与当前矩阵相乘。 示例代码中展示了如何使用Matrix进行旋转和平移: ```java Matrix m = new Matrix(); m.postRotate(30); m.postTranslate(100, 100); ``` 这段代码首先创建了一个新的Matrix对象,接着向右下角旋转30度,然后在原基础上向右平移100像素,向下平移100像素。 在实际应用中,Matrix通常与Canvas结合使用,通过Canvas的`drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint)`方法,我们可以用变换后的Matrix绘制出变换后的图像。 此外,对于View的自定义,如示例中的`MyView`,我们可能需要重写`onDraw(Canvas canvas)`方法,利用Matrix对Canvas进行操作,从而实现对显示的图片进行变换。 总结来说,Android的Matrix类提供了强大的图像处理能力,通过灵活运用translate、rotate、scale和skew以及set、post、pre方法,开发者可以创建出丰富的图像动画和交互效果。在开发过程中,理解并熟练掌握这些方法是提升应用程序用户体验的关键。
2014-04-22 上传
1. android 图像处理系列之一--Bitmap、Drawable 和byte[]之间的相互转换..................................................2 2. android 图像处理系列之二--图片旋转、缩放、反转........................................................................................ 3 3. android 图像处理系列之三--图片色调饱和度、色相、亮度处理.....................................................................6 4. android 图像处理系列之四--给图片添加边框(上)...................................................................................... 15 5. android 图像处理系列之五--给图片添加边框(中)...................................................................................... 19 6. android 图像处理系列之六--给图片添加边框(下)-图片叠加...................................................................21 7. android 图像处理系列之七--图片涂鸦,水印-图片叠加.............................................................................. 25 8. android 图像处理系列之八--图片特效处理之一-怀旧效果.......................................................................... 26 9. android 图像处理系列之九--图片特效处理之二-模糊效果.......................................................................... 28 10. android 图像处理系列之十--图片特效处理之三-锐化效果........................................................................ 33 11. android 图像处理系列之十一--图片特效处理之四-浮雕效果.....................................................................36 12. android 图像处理系列之十二--图片特效处理之五-底片效果.....................................................................38 13. android 图像处理系列之十三--图片特效处理之六-光照效果.....................................................................40 14. android 图像处理系列之十四--图片特效处理之七-图片叠加.....................................................................43 15. android 图像处理系列之十五--图片特效处理之八-光晕效果.....................................................................45 16. android 图像处理系列之十六--图片特效处理之九-条纹效果.....................................................................48 17. android 图像处理系列之十七--图片特效处理之十-国际象棋棋盘的绘制.................................................50 18. android 图像处理系列之十八--图片特效处理之十一-图片乾坤大挪移之图片裁剪组合.........................51 19. android 图像处理系列之十九--图片特效处理之十二-图片自由裁剪、人脸识别.....................................54 20. android 图像处理系列之二十--图片处理总结................................................................................................ 57