天天看点

[Android] 使用Matrix矩阵类对图像进行缩放、旋转、对比度、亮度处理

    前一篇文章讲述了Android拍照、截图、保存并显示在ImageView控件中,该篇文章继续讲述Android图像处理技术,主要操作包括:通过打开相册里的图片,使用Matrix对图像进行缩放、旋转、移动、对比度、亮度、饱和度操作,希望对大家有所帮助.

首先,设置activity_main.xml布局如下所示:

然后,在Mainctivity.java中public class MainActivity extends Activity函数添加代码如下:

再调用自定义函数实现显示图片:

显示的效果如下图所示,该图叫莱娜图(Lenna),是图像处理中经常使用的样例图.

[Android] 使用Matrix矩阵类对图像进行缩放、旋转、对比度、亮度处理

   然后通过Matrix对图像进行处理操作,在onCreate函数中添加点击事件:

最后分别自定义函数各操作实现,代码如下:

同时自定义变量如下:

它的运行结果如下图所示:

[Android] 使用Matrix矩阵类对图像进行缩放、旋转、对比度、亮度处理
[Android] 使用Matrix矩阵类对图像进行缩放、旋转、对比度、亮度处理
[Android] 使用Matrix矩阵类对图像进行缩放、旋转、对比度、亮度处理
[Android] 使用Matrix矩阵类对图像进行缩放、旋转、对比度、亮度处理
[Android] 使用Matrix矩阵类对图像进行缩放、旋转、对比度、亮度处理
[Android] 使用Matrix矩阵类对图像进行缩放、旋转、对比度、亮度处理

    需要指出的是:该项目仅仅讲述处理的过程,并没有考虑很多因素,如:有的图像显示可能超出屏幕,没有载入图片点击处理按钮报错,横竖屏切换导致不显示图片,最下面按钮可能被遮挡,图像放大画布没有变,因为为认为显示一张改变后的图片效果更好,而该工程仅仅是对比.图像缩放移动触屏变换更好,下一篇讲述.

Android中可以通过Matrix和ColorMatrix对图像进行处理.

    1.Matrix

    图像空间变换,包括旋转、剪裁、缩放或移动.Matrix类中每个数字都将应用于图像上每个点的3个坐标x\y\z之一.

    如下代码通过setValues设置值.(1,0,0)表示x坐标转换x=1x+0y+0z,同样y=0x+1y+0z,z=0x+0y+1z.该矩阵不做任何变换.如果第一行改为(.5f,0,0),那么图像在x轴上将图像压缩50%.移动见setTranslate()函数.

    2.ColorMatrix

    最后希望该文章对大家有所帮助,尤其是Android初学者.该文章是讲述Android使用Matrix处理图片的基础文章,如果有不足或错误地方,请见谅~参考资料《Android多媒体开发高级编程 著:Shawn Van Every》

继续阅读