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