1

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

4

0 回答 0