android图像编辑和处理(二)

1.输入矩阵:

Matrix矩阵类,当现有位图对象上进行绘制或从另一个位图对象创建某个位图时,可以使用该类。

Matrix矩阵类的每个数字都应用于图像上每个点的3个坐标(x,y或z)之一:

如:1   , 0 ,    0,

        0,   1,     0,

        0,   0,     1

第一行:指定x坐标:x=1x+0y+0z;

第二行:指定y坐标:y=0x+1y+oz;

第三行:指定z坐标:z=0x+0y+1z;

                               Matrix matrix=new Matrix();
				matrix.setValues(new float[]{
						1,0.5f,0,
						0,1,0,
						0,0,1
				});
				canvas.drawBitmap(bmp, matrix, paint);
				copyPicture.setImageBitmap(alteredBitmap);
在需要增加结果位图大小是可以设置:

alteredBitmap = Bitmap.createBitmap(bmp.getWidth()*2, bmp.getWidth(), bmp.getConfig());

2.Matrix类的方法

(1)旋转:

Matrix matrix=new Matrix();

//matrix.setRotate(15);/*旋转的角度,围绕默认点(0,0),正数顺时针旋转,负数逆时针旋转,默认点是图像左上角*/
matrix.setRotate(15, bmp.getWidth()/2,bmp.getHeight()/2);//中心旋转
canvas.drawBitmap(bmp, matrix, paint);

(2)缩放:

matrix.setScale(1.5f, 1);//缩放,第一个参数x轴的缩放比例,第二个参数y轴的缩放比例。

(3)平移:

matrix.setTranslate(1.5f, -10);//平移,第一个参数x轴的移动数量,第二个参数y轴的移动数量。

(4)镜像:

matrix.setScale(-1, 1);
matrix.postTranslate(bmp.getWidth(), 0);//向右移动

(5)翻转:

matrix.setScale(1,-1);
matrix.postTranslate(0, bmp.getHeight());//向下移动

(6)绘制替代图像:

以前所使用的方法的缺点是图像会被截断,因为没有计算转换后的结果大小。解决方法:当初次创建位图对象时,应用Matrix对象而不是绘制到一个空的位图对象中。

通过这种方式无需再获得Canvas和Paint对象。缺点是不能再更改位图对象。

在Bitmap类中存在一个静态方法createBitmap.    

  Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, false);//参数不再说明。

示例:

				Matrix matrix=new Matrix();
				matrix.setRotate(15, bmp.getWidth()/2,bmp.getHeight()/2);//中心旋转
				Bitmap alteredBitmap=Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, false);
                                copyPicture.setImageBitmap(alteredBitmap);


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。