【问题标题】:image deformation in an android projrctandroid项目中的图像变形
【发布时间】:2018-02-01 18:56:28
【问题描述】:

在我的 android 应用程序中,我需要将图像从一个点变形到另一个点。 应该是这样的

原点A和B是A的新位置

结果可能是这样的

我曾尝试使用“drawBitmapMesh”功能使其成为可能,但没有达到,这里是包装代码:

public void warp(float startX, float startY, float endX, float endY) {

        float ddPull = (endX - startX) * (endX - startX) + (endY - startY) * (endY - startY);
        float dPull = (float) Math.sqrt(ddPull);

        for (int i = 0; i < (COUNTS * 2); i += 2) {
            float dx = orig[i] - startX;
            float dy = orig[i + 1] - startY;
            float dd = dx * dx + dy * dy;
            float d = (float) Math.sqrt(dd);

            // do deformation when the point is in the circle
            if (d < cirR) {
                double e =(cirR * cirR - dd) * (cirR * cirR - dd) / ((cirR * cirR - dd + dPull * dPull) * (cirR * cirR - dd + dPull * dPull));
                double pullX = e * (endX - startX);
                double pullY = e * (endY - startY);

                verts[i] = (float) (orig[i] + pullX);
                verts[i + 1] = (float) (orig[i + 1] + pullY);

            }
        }

        invalidate();
    }

【问题讨论】:

    标签: android


    【解决方案1】:

    最后我自己解决了,我用的是Android的GPUimage,用GLSL写了一个自定义的filter,效果不错~!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-15
      • 2019-01-26
      • 2012-09-26
      • 2014-11-30
      • 2010-12-29
      相关资源
      最近更新 更多