频道栏目
IT货架 > > 正文
android图像编辑和处理(二)
网友分享于:Jan 1, 1970 8:00:00 AM    来源: IT货架   

标签:图片   旋转   平移   缩放   镜像   

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);


android图像编辑和处理(二)

标签:图片   旋转   平移   缩放   镜像   

相关板块推荐 iPhone WindowsPhone

广告服务联系QQ:1134687142 | 网站地图

版权所有: IT货架- 内容来自互联网,仅供用于技术学习,请遵循相关法律法规. 京ICP备11030978号-1