目前我正在开发一个带有 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 是否已完成渲染?