2015-06-25 43 views
1

我正在开发一个应用程序,其中包括裁剪功能,并在此我被阻止在下面的情况。如何获取android中的图像矩阵坐标?

场景

作物覆盖不循环当我们将拉直的图像,如果我们改变种植覆盖整个图像,也比不工作。

我从谷歌的代码,但它与矩阵有关,我曾尝试使用矩阵,但在这里我需要找到矩阵的坐标(边缘)来移动覆盖。

如何找到它?如果任何人有任何想法,请帮助我......

我加入了图像问题的解释 enter image description here

在此先感谢..
我使用下面的代码,但我没有得到确切的矩阵的坐标

RectF r = new RectF(); 
mymatrix.mapRect(r); 
Rect rect = 
new Rect((int)r.left,int)r.top,int)r.right+width,int)r.bottom+height); 
+0

如果您在矩阵上应用旋转,则不应使用'mapRect'。我的建议是找出代表每个矩形边缘的4个初始点(图像本身),并使用'mapPoints'代替。 –

+0

感谢您的回复是否有任何示例代码 – Ashok

回答

1

如果您在矩阵上应用旋转,则不应使用mapRect。我的建议是找出代表每个矩形边缘的4个起始点(图像本身),并使用mapPoints代替。

可以假设您的图像宽200px,高200px,左上角位于原点(0,0)。

如果从它的中心旋转该图像(100,100)45度,然后缩放200%,从它的中心,我们将有以下情形:

//original image coords 
    float[] points = { 
      0f, 0f, //left, top 
      200f, 0f, //right, top 
      200f, 200f, //right, bottom 
      0f, 200f//left, bottom 
    }; 

    Matrix matrix = new Matrix(); 
    //rotate 45 degrees from image center 
    matrix.postRotate(45f, 100f, 100f); 
    //scale 200% from center 
    matrix.postScale(2f, 2f, 100f, 100f); 

    //get the new edges coords 
    matrix.mapPoints(points); 

调用matrix.mapPoints(points)后点阵列将有更新COORDS。这意味着points[0], points[1]将具有新的左上图像坐标等。

偶数索引代表横坐标,奇数索引代表points数组上的纵坐标。

+0

感谢您的答复如何将点转换为矩形值?bcoz,在这里我想修复覆盖的边界来移动整个矩阵位图 – Ashok

+0

你必须记住'Rect '班级本身不会代表你发布的图片上的蓝色矩形。这就是说,你的意思是“修复覆盖层的边界以移动整个矩阵位图”?我无法正确理解。 –

+0

对不起,我想移动覆盖整个矩阵(blueborder) – Ashok