android gpuimage-使用GPUImageView进行图像校正

android gpuimage-使用GPUImageView进行图像校正,android,android-gpuimageview,Android,Android Gpuimageview,在我的android应用程序中。我想使用android gpuimage库创建图像校正编辑功能,但GPUImageView没有提供getBitmap()或setMatrix()的功能,那么怎么可能请让我知道?下面是要查看的代码: @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

在我的android应用程序中。我想使用android gpuimage库创建图像校正编辑功能,但GPUImageView没有提供
getBitmap()
setMatrix()
的功能,那么怎么可能请让我知道?下面是要查看的代码:

       @Override
                public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

                    if(isStraightenEffectEnabled){
                        float angle = (progress - 45);
                        float width = mGPUImageView.getWidth();  
                        float height = mGPUImageView.getHeight();

                        if (width > height) {
                            width = mGPUImageView.getHeight();
                            height = mGPUImageView.getWidth();
                        }

                        float a = (float) Math.atan(height/width);

                        // the length from the center to the corner of the green
                        float len1 = (width / 2) / (float) Math.cos(a - Math.abs(Math.toRadians(angle)));
                        // the length from the center to the corner of the black
                        float len2 = (float) Math.sqrt(Math.pow(width/2,2) + Math.pow(height/2,2));
                        // compute the scaling factor
                        float scale = len2 / len1;

                        Matrix matrix = mGPUImageView.getMatrix();
                        if (mMatrix == null) {
                            mMatrix = new Matrix(matrix);
                        }
                        matrix = new Matrix(mMatrix);

                        float newX = (mGPUImageView.getWidth() / 2) * (1 - scale);
                        float newY = (mGPUImageView.getHeight() / 2) * (1 - scale);
                        matrix.postScale(scale, scale);
                        matrix.postTranslate(newX, newY);
                        matrix.postRotate(angle, mGPUImageView.getWidth() / 2, mGPUImageView.getHeight() / 2);
是否有可能获得mGPUImageView.setMatrix(矩阵)


现在这里
getMatrix()
GPUImageView
的一个方法,但是
setMatrix()
getBitmap()
不是
GPUImageView
类可用的方法。如果可能,有什么解决方法吗?

在GPUImageView类中添加getGPUImage

public GPUImage getGPUImage() {
    return mGPUImage;
}
然后获取您可以获得如下位图:

mGPUImageView.getGPUImage().getBitmapWithFilterApplied();

在GPUImageView类中添加getGPUImage

public GPUImage getGPUImage() {
    return mGPUImage;
}
然后获取您可以获得如下位图:

mGPUImageView.getGPUImage().getBitmapWithFilterApplied();

您还可以获得如下位图:
位图Bitmap=mGPUImageView.capture()

您还可以获得如下位图:
位图Bitmap=mGPUImageView.capture()

您可以获得过滤后的位图渲染器和像素缓冲区。这可能对你有帮助

GPUImageLookupFilter amatorka = new GPUImageLookupFilter();
amatorka.setBitmap(BitmapFactory.decodeResource(getResources(), getResources().getIdentifier("fil_" + position, "drawable", getPackageName())));
GPUImageRenderer renderer = new GPUImageRenderer(amatorka);
renderer.setImageBitmap(bitmap, false);
PixelBuffer buffer = new PixelBuffer(80, 80);
buffer.setRenderer(renderer);
buffer.getBitmap();

您可以获得过滤位图渲染器和像素缓冲区。这可能对你有帮助

GPUImageLookupFilter amatorka = new GPUImageLookupFilter();
amatorka.setBitmap(BitmapFactory.decodeResource(getResources(), getResources().getIdentifier("fil_" + position, "drawable", getPackageName())));
GPUImageRenderer renderer = new GPUImageRenderer(amatorka);
renderer.setImageBitmap(bitmap, false);
PixelBuffer buffer = new PixelBuffer(80, 80);
buffer.setRenderer(renderer);
buffer.getBitmap();

我是在同一天做的,但是非常感谢你的帮助我是在同一天做的,但是非常感谢你的帮助