나는 터치에서 경로를 선택하고 강제로 닫습니다. 그런 다음 경로 내부의 이미지를 자르고 원본 이미지의 흐릿한 버전 위에 다시 그립니다. 그러나 가장자리는 매우 날카 롭습니다. 흐릿함이 바깥쪽으로 증가하는 속도로 한계에 도달하기를 원합니다.
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);
}
문제는 @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);
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다