android gpuimage-使用GPUImageView进行图像校正
在我的android应用程序中。我想使用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) {
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();
我是在同一天做的,但是非常感谢你的帮助我是在同一天做的,但是非常感谢你的帮助