我在onTouch上选择一条路径并强行关闭它。然后我在路径中裁剪图像并将其重绘在原始图像的模糊版本上。 但边缘看起来非常锋利。我希望模糊性能够以越来越高的速度向外发展。
void blurIt() {
if(path.isEmpty()) {
Toast.makeText(getContext(),"Selection is EMPTY",Toast.LENGTH_LONG).show();
return;
}
Bitmap tmp = Bitmap.createBitmap(MainActivity.rawBitmap.getWidth(),MainActivity.rawBitmap.getHeight(),MainActivity.rawBitmap.getConfig());
Canvas c = new Canvas(tmp);
paintRaw = new Paint();
paintRaw.setAntiAlias(true);
c.drawPath(pathReal,paintRaw);
paintRaw.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
c.drawBitmap(MainActivity.rawBitmap,0,0,paintRaw);
canvas.drawBitmap(tmp,0,0,null); //blurred bitmap is set in canvas previously
setImageBitmap(MainActivity.blurBitmap);
}
答案 0 :(得分:0)
@pskink的帮助解决了这个问题。
void blurIt() {
if(path.isEmpty()) {
Toast.makeText(getContext(),"Selection is EMPTY",Toast.LENGTH_LONG).show();
return;
}
Bitmap tmp = Bitmap.createBitmap(MainActivity.rawBitmap.getWidth(),MainActivity.rawBitmap.getHeight(),MainActivity.rawBitmap.getConfig());
Canvas c = new Canvas(tmp);
paintRaw = new Paint();
paintRaw.setAntiAlias(true);
paintRaw.setDither(true);
paintRaw.setStyle(Paint.Style.FILL);
BitmapShader shader = new BitmapShader(MainActivity.rawBitmap,Shader.TileMode.CLAMP,Shader.TileMode.CLAMP);
paintRaw.setShader(shader);
paintRaw.setMaskFilter(new BlurMaskFilter(20, BlurMaskFilter.Blur.NORMAL));
c.drawPath(realPath,paintRaw);
setImageBitmap(tmp);
}