3

我应用了几个 androidjhlabs.jar 过滤器及其对我的工作。这是有效的过滤器: GaussianFilter ContrastFilter InverFilter GrayScalFilter MarbleFilter WeaveFilter GainFilter SolarFilter HSBFilter 但我尝试了一些其他过滤器,无法给我正确的输出一些图像被转换为​​黑色一些被转换为白色,这意味着我不知道正确的比例,随机性,数量,湍流和网格类型等。我尝试了水过滤器,但它仅应用于中心点意味着不在孔图像中。这是代码:

public static Bitmap setWaterFilter(Bitmap src)
{
int width=src.getWidth();

int height=src.getHeight();

int pixel;

WaterFilter filter=new WaterFilter();

int[] bittoarr = AndroidUtils.bitmapToIntArray(src);

int[] result=filter.filter(bittoarr, width, height);

Bitmap applied = Bitmap.createBitmap(result, width, height,

Config.ARGB_8888);

return applied;
}

我通过了这样的来源:

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.px);
bitmap=Effects.setWaterFilter(bitmap);
im.setImageBitmap(bitmap);

任何人都知道如何解决它。意味着其他过滤器也像 BoxBlur,Crop 也。

4

1 回答 1

0

这很简单;-) 你只需设置更多参数来实现你想要的,如下所示:

使用 setRadius 设置波的半径,使用 setCenter 指向波的中心,最小值为 0,最大值为 1 为图像源的宽度和高度;

            WaterFilter waterFilter = new WaterFilter();
            waterFilter.setEdgeAction(TransformFilter.WRAP);
            waterFilter.setRadius(350.0f);
            waterFilter.setWavelength(8.0f);
            waterFilter.setAmplitude(0.6f);
            waterFilter.setCentre(0.5f, 0.5f);
            int[] src65 = AndroidUtils.bitmapToIntArray(inter);
            int width65 = inter.getWidth();
            int height65 = inter.getHeight();
            int[] dest65 = waterFilter.filter(src65, width65, height65);
            Bitmap destBitmap65 = Bitmap.createBitmap(dest65, width65, height65, Bitmap.Config.ARGB_8888);
于 2017-01-22T06:43:59.027 回答