在位图上使用Matrix.polyToPoly()时,有没有办法不拉伸位图?

时间:2017-11-16 09:20:12

标签: java android bitmap

我正在尝试使用给定的四边形对我的位图进行透视转换。但是,Matrix.polyToPoly函数不仅会拉伸我想要的图像部分,还会拉伸给定区域之外的像素,因此在某些边缘情况下会形成一个巨大的图像,因为OOM会导致我的应用程序崩溃。

  • 有没有什么方法可以将所有区域外的像素放下来不被拉伸?
  • 或者还有其他可能性来进行更加内存友好的透视变换吗?

我现在这样做:

// Perspective Transformation
float[] destination = {0, 0,
        width, 0,
        width, height,
        0, height};

Matrix post = new Matrix();
post.setPolyToPoly(boundingBox.toArray(), 0, destination, 0, 4);
Bitmap transformed = Bitmap.createBitmap(temp, 0, 0, cropWidth, cropHeight, post, true);

其中cropWidthcropHeight是位图的大小(我将其裁剪到四边形的边缘以节省内存)并且temp表示裁剪位图。

1 个答案:

答案 0 :(得分:0)

感谢 pskink 我得到了它的工作,这里有一个包含代码的帖子:

  

Distorting an image to a quadrangle fails in some cases on Android