图像在Android中由JHlabs过滤

时间:2013-11-14 13:06:54

标签: android image-processing

我应用了几个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也。

1 个答案:

答案 0 :(得分:0)

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

使用setRadius设置wave的半径,使用setCenter指向wave的中心,min值为0,并且对于图像源的宽度和高度,max为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);
相关问题