android 从matrix获取处理过的图片的实际宽度

android 从matrix获取处理过的图片的实际宽度
//获取图片的实际宽度
        private float getRealWidth()
        {
            Rect rectTemp = mImgPic.getDrawable().getBounds();
            float[] values = new float[9];
            matrix.getValues(values);
           return rectTemp.width()*values[0];
        }
  
其实就是关于怎么获取图片左上角和右下角实时坐标的问题。
关键在这两句

<span>		</span>float[] values = new float[9];
            <span>	</span>matrix.getValues(values);

values传入getValues方法后。。会回填9个数据。

首先有这么张坑B图(rrrrrrrrrrrrrrrrrrrrrrrrr)

这B图简直是对数学不好的人的嘲讽对吧。。好吧大家表害怕。



MSCALE用于处理缩放变换


MSKEW用于处理错切变换


MTRANS用于处理平移变换



哔了狗了。。我怕读者看的心烦,特意放

大点。


拖动,很显而易见,就是MTRANS了!!。。。而float values=float[9];这个

数组存

储矩阵是,第一行是123,第二行是456,最后是789.

首先看左上角的点:很直接的拿了


values[2]
values[5]

这不解释。

右下角的点,很容易就想到。直接加图片的尺寸就好了呀!!!

问题是,放大缩小后图片的尺寸变化了!


一般第一反应是,自己写一个。计算并且存储图片的变化。
很显然的,这么做费力不讨好。效率不高。。。。。开始我以为这个坑爹的matrix的作者比较脑残。既然没有做出直接能拿当前图片坐标的方法。那应该也没有想过会记录图片的变化吧。。可是后来我发现我错了。。。。写这段程序的人就是个学数学的购币。。。。。。


没错





MSCALE用于处理缩放变换----的比率

(而且是与初始图像相比的比率)!


于是右下角坐标的公式就出来了
<span style="white-space:pre">	</span>float leftX= values[2]+rectTemp.width()*values[0];
        float leftY=values[5]+rectTemp.height()*values[4];


<span>		</span>float[] values = new float[9];
            <span>	</span>matrix.getValues(values);
<span style="font-size: 12px;"><span style="font-size: 32px;">  </span></span>
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值