我正在使用GPUImage android库在相机预览上应用滤镜,并在拍摄照片后使用应用的滤镜保存图像。问题是,当我拍摄该照片时,我无法使用滤镜获取图像。 我使用下面的代码:使用GPUImage将应用的滤镜保存在相机预览中
@Override
public void onPictureTaken(byte[] data, Camera camera) {
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
mGPUImage.setImage(bitmap);
bitmap = mGPUImage.getBitmapWithFilterApplied();
saveImage(bitmap);
}
在GPUImage的库页(https://github.com/CyberAgent/android-gpuimage/#sample-code)的代码示例说:
随着预览:
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
Uri imageUri = ...;
mGPUImage = new GPUImage(this);
mGPUImage.setGLSurfaceView((GLSurfaceView) findViewById(R.id.surfaceView));
mGPUImage.setImage(imageUri); // this loads image on the current thread, should be run in a thread ?? (can't understand this line)
mGPUImage.setFilter(new GPUImageSepiaFilter());
// Later when image should be saved saved:
mGPUImage.saveToPictures("GPUImage", "ImageWithFilter.jpg", null);
}
即使他们的样本中,我不能救带过滤器的图像。 请有人能解释给我?
您可以将图像保存,但滤波效果丢失,对不对? –
不,既不保存图像 –
@ Luiz Henrique Alegria尝试我的代码,并检查Android Menifest中的写入权限。 –