目前我正在使用 GpuImage 库开发 Android 应用程序。我的目标是通过 GpuImage 对图像应用过滤器。
GpuImage gpuImage = new GpuImage(this);
gpuImage.setBitmap(imageBitmap) // bitmap of the image that I want to apply effect on
gpuImageView = findViewById(R.id.gpuimageview); //it is ImageView
gpuImage.setFilter(new GPUImageSobelEdgeDetection());
gpuImageView.setBitmap(gpuImage.getBitmapWithFilterApplied());
这就是我基本上通过 GpuImage 对图像应用效果并获得过滤器应用位图的方式。 但是当我使用不同的 GpuImage 过滤器快速将效果应用于图像时 如下图所示:
ArrayList filtersList = new ArrayList<GpuImageFilter>()
...
//Fill the array with various GpuImage filters
...
GpuImage gpuImage = new GpuImage(this);
gpuImage.setBitmap(imageBitmap) // bitmap of the image that I want to apply effect on
button = findViewById(R.id.button);
gpuImageView = findViewById(R.id.gpuimageview); //it is ImageView
//button that changes filter at every click
button.setOnClickListener(new OnClickListener() {
public void onClick(View v)
{
if(filtersList.size() > 0){
gpuImage.setFilter(filtersList.get(filtersList.size()-1));
filtersList.remove(filtersList.size()-1);
gpuImageView.setBitmap(gpuImage.getBitmapWithFilterApplied());
}
});
当我反复快速地点击按钮时, 我得到一个位图,其中只填充了灰色等颜色。 有什么办法可以防止这个问题吗?或者在应用其他效果之前,我如何确定 GpuImage 已完成渲染?