【问题标题】:Zooming and translate GPUImageView android缩放和翻译 GPUImageView android
【发布时间】:2016-02-24 03:56:44
【问题描述】:

我希望 GPUimageView 能够进行捏合和缩放。我在Image effects with rotation and pinch to zoom using GLSurfaceView Android中找到了示例

所以,在 GPUImageRenderer 中编辑

private void adjustImageScaling() {
        float outputWidth = mOutputWidth;
        float outputHeight = mOutputHeight;
        if (mRotation == Rotation.ROTATION_270 || mRotation == Rotation.ROTATION_90) {
            outputWidth = mOutputHeight;
            outputHeight = mOutputWidth;
        }

        float ratio1 = outputWidth / mImageWidth;
        float ratio2 = outputHeight / mImageHeight;
        float ratioMax = Math.max(ratio1, ratio2);
        int imageWidthNew = Math.round(mImageWidth * ratioMax);
        int imageHeightNew = Math.round(mImageHeight * ratioMax);

        float ratioWidth = imageWidthNew / outputWidth;
        float ratioHeight = imageHeightNew / outputHeight;

        float[] cube = CUBE;
        float[] textureCords = TextureRotationUtil.getRotation(mRotation, mFlipHorizontal, mFlipVertical);
        if (mScaleType == GPUImage.ScaleType.CENTER_CROP) {
            float distHorizontal = (1 - 1 / ratioWidth) / 2;
            float distVertical = (1 - 1 / ratioHeight) / 2;
            textureCords = new float[]{
                    addDistance(textureCords[0], distHorizontal), addDistance(textureCords[1], distVertical),
                    addDistance(textureCords[2], distHorizontal), addDistance(textureCords[3], distVertical),
                    addDistance(textureCords[4], distHorizontal), addDistance(textureCords[5], distVertical),
                    addDistance(textureCords[6], distHorizontal), addDistance(textureCords[7], distVertical),
            };
        } else {
            cube = new float[]{
                    CUBE[0] / ratioHeight, CUBE[1] / ratioWidth,
                    CUBE[2] / ratioHeight, CUBE[3] / ratioWidth,
                    CUBE[4] / ratioHeight, CUBE[5] / ratioWidth,
                    CUBE[6] / ratioHeight, CUBE[7] / ratioWidth,
            };
        }
    for (int i = 0; i < 8; i++) {
                cube [i] *= mZoom;
            }
        mGLCubeBuffer.clear();
        mGLCubeBuffer.put(cube).position(0);
        mGLTextureBuffer.clear();
        mGLTextureBuffer.put(textureCords).position(0);
    }

我添加了代码:

for (int i = 0; i < 8; i++) {
                cude[i] *= mZoom;
            }

高于 glCubeBuffer.clear();但不起作用。 请帮我正确的工具。 谢谢

编辑:问题已解决: setRendermode 从脏到 setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY); 它有效

【问题讨论】:

  • 我也面临同样的问题。你能帮我解决同样的问题吗?对我来说 GLSurfaceView.RENDERMODE_CONTINUOUSLY 也不起作用。

标签: android android-gpuimageview


【解决方案1】:

setRendermode 从脏到 setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY); 它有效

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-05
    • 2013-09-13
    • 1970-01-01
    • 2012-10-27
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多