如何使用Matrix对bitmap的旋转与镜像水平镜像是什么意思垂直翻转

如何使用Matrix对bitmap的旋转与镜像水平垂直翻转_百度知道
如何使用Matrix对bitmap的旋转与镜像水平垂直翻转
我有更好的答案
s.addChild(image);//旋转就旋转这个s============这个是注册点的问题,在flash程序里面,显示对象缩放、旋转都是基于注册点,flash里面不可以直接修改注册点的位置,我们可以换一个思路解决问题。flash里面是基于显示对象的,旋转一个容器,容器里面的子对象会跟随父容器旋转,位图导入之后注册点的位置是位于右上角,你可以new一个sprite对象sp,然后将bitmap添加到sp对象里面,去设置bitmap的位置,然后旋转sp就行了var sp:sprite=new Sprite()addChild(sp)sp.addChild(bitmap)bitmap.x=-bitmap.width/2bitmap.y=-bitmap.height/2这样旋转sp对象就相当于bitmap绕着中心旋转=============呵呵,当然也能使用Matrix实现绕任意点旋转,import flash.display.Bimport flash.display.DisplayOimport flash.geom.Mvar bitmap:Bitmap = new Bitmap(new Bitmap1());bitmap.x = 262-bitmap.width/2;bitmap.y = 146-bitmap.height/2;addChildAt(bitmap, 0);var matrix:Matrix = bitmap.transform.// 注意旋转要相对于最初的matrix, 否则效果将跟你想的不一致.rotate(bitmap, 30, bitmap.width/2, bitmap.height/2, matrix);function rotate(dis:DisplayObject, rotation:int, px:int, py:int, original:Matrix):void{var tx:int = dis.x +var ty:int = dis.y +var m:Matrix = original.clone();m.translate(-tx, -ty);m.rotate(rotation/180*Math.PI);
采纳率:88%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。对Bitmap 进行水平或者垂直的镜面翻转
对Bitmap 进行水平或者垂直的镜面翻转
Matrix m = new Matrix();
if (i & 4)
m.setScale(-1, 1);//水平翻转
m.setScale(1, -1);//垂直翻转
int w = picture.getWidth();
int h = picture.getHeight();
//生成的翻转后的bitmap
Bitmap reversePic = Bitmap.createBitmap(picture.getPictureBitmap(), 0, 0, w, h, m, true);方法1. 利用Bitmap.createBitmap
&& Bitmap adjustPhotoRotation(Bitmap bm, final int orientationDegree) {
&&&&&&&&&&&&Matrix m = new Matrix();&&&&&&&&&&&&m.setRotate(orientationDegree, (float) bm.getWidth() / 2, (float) bm.getHeight() / 2);&&&&&&&&&&&&try {
&&&&&&&&&&&Bitmap bm1 = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), m, true);
&&&&&&&&&&&&&&&return bm1;
&&&&&&&&&&&&&&} catch (OutOfMemoryError ex) {&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&
方法2. 利用Canvas.drawBitmap
adjustPhotoRotation(Bitmap bm, final int orientationDegree)
{&&&&&&&&Matrix m = new Matrix();&&&&&&&&m.setRotate(orientationDegree, (float) bm.getWidth() / 2, (float) bm.getHeight() / 2);&&&&&&&&float targetX, targetY;&&&&&&&&if (orientationDegree == 90) {&&&&&&&&targetX = bm.getHeight();&&&&&&&&targetY = 0;&&&&&&&&} else {&&&&&&&&targetX = bm.getHeight();&&&&&&&&targetY = bm.getWidth();&&}&&&&final float[] values = new float[9];&&&&m.getValues(values);&&&&float x1 = values[Matrix.MTRANS_X];&&&&float y1 = values[Matrix.MTRANS_Y];&&&&m.postTranslate(targetX - x1, targetY - y1);&&&&Bitmap bm1 = Bitmap.createBitmap(bm.getHeight(), bm.getWidth(), Bitmap.Config.ARGB_8888);
Paint paint = new Paint();&&&&Canvas canvas = new Canvas(bm1);&&&&canvas.drawBitmap(bm, m, paint);
&&&&return bm1;&&}
性能测试:
CPU : MTK6575 ,1G Hz
MEM : 512MB
OS : andoid 2.3.7
2.图片尺寸1632 * 1224
1. 方法1在280 - 350毫秒间, 方法2在110毫秒左右。
2. 方法2优于方法1
阅读(...) 评论()如何使用Matrix对bitmap的旋转与镜像水平垂直翻转_百度知道
如何使用Matrix对bitmap的旋转与镜像水平垂直翻转
我有更好的答案
 Bitmap newb = Bitmap.createBitmap(ww, wh, Config.ARGB_8888);// 创建一个新的和SRC长度宽度一样的位图  Canvas cv = new Canvas(newb);  Matrix m = new Matrix();  m.postScale(1, -1); //镜像垂直翻转  m.postScale(-1, 1); //镜像水平翻转  m.postRotate(-90); //旋转-90度  Bitmap new2 = Bitmap.createBitmap(a, 0, 0, w, h, m, true);
互联网+时代高效组织信息化平台
主营:汇讯WiseUC企业即时通讯软件
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。Stay Hungry, Stay Foolish
Android学习笔记之Bitmap位图的旋转
位图的旋转也可以借助Matrix或者Canvas来实现。
通过postRotate方法设置旋转角度,然后用createBitmap方法创建一个经过旋转处理的Bitmap对象,最后用drawBitmap方法绘制到屏幕上,于是就实现了旋转操作。
下面例子中把原位图和经旋转处理的位图都绘制到屏幕上,目的是做一个对比。
package xiaosi.
import android.app.A
import android.os.B
public class mianActivity extends Activity
private BitmapView bitmapView =
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
bitmapView = new BitmapView(this);
setContentView(bitmapView);
BitmapView.java
package xiaosi.
import android.content.C
import android.content.res.R
import android.graphics.B
import android.graphics.BitmapF
import android.graphics.C
import android.graphics.C
import android.graphics.M
import android.view.V
public class BitmapView extends View
public BitmapView(Context context)
super(context);
//重写onDraw方法
public void onDraw(Canvas canvas)
// 获取资源文件的引用res
Resources res = getResources();
// 获取图形资源文件
Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.h);
// 设置canvas画布背景为白色
canvas.drawColor(Color.BLACK);
// 在画布上绘制缩放之前的位图,以做对比
//屏幕上的位置坐标是0,0
canvas.drawBitmap(bmp, 0, 0, null);
// 定义矩阵对象
Matrix matrix = new Matrix();
// 缩放原图
matrix.postScale(1f, 1f);
// 向左旋转45度,参数为正则向右旋转
matrix.postRotate(-45);
//bmp.getWidth(), 500分别表示重绘后的位图宽高
Bitmap dstbmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), 500,
matrix, true);
// 在画布上绘制旋转后的位图
//放在坐标为0,200的位置
canvas.drawBitmap(dstbmp, 0, 200, null);
源代码下载:
没有更多推荐了,

我要回帖

更多关于 matlab水平镜像 的文章

 

随机推荐