0
두 개의 Renderscripts : ScriptIntrinsicBlur 및 ScriptIntrinsicColorMatrix를 연결하려고합니다.
나는 이미지를 흐리게 처리하고 컬러 필터를 적용하려고합니다. 여기 Chain 2 Renderscript Intrinsics : Blur & ColorMatrix
final ScriptIntrinsicBlur scriptBlur = ScriptIntrinsicBlur.create(
mRenderScript,
Element.U8_4(mRenderScript));
final Allocation input = Allocation.createFromBitmap(mRenderScript,
bmp);
Bitmap blurOutBitmap = bmp.copy(bmp.getConfig(), true);
final Allocation output = Allocation.createFromBitmap(
mRenderScript, blurOutBitmap);
scriptBlur.setRadius(mBlur_Radius);
scriptBlur.setInput(input);
scriptBlur.forEach(output);
bmp.recycle();
output.copyTo(blurOutBitmap);
mRenderScript.finish();
final ScriptIntrinsicColorMatrix scriptColor = ScriptIntrinsicColorMatrix
.create(mRenderScript, Element.U8_4(mRenderScript));
/** for a first test, I am using a simple blue filter **/
Matrix3f mat = new Matrix3f(new float[] {
1, 0, 1,
0, 1, 1,
0, 0, 1
});
scriptColor.setColorMatrix(mat);
final Allocation colorInput = Allocation.createFromBitmap(mRenderScript,
blurOutBitmap);
Bitmap outBitmap = bmp.copy(blurOutBitmap.getConfig(), true);
final Allocation colorOutput = Allocation.createFromBitmap(
mRenderScript, outBitmap);
scriptColor.forEach(colorInput, colorOutput);
blurOutBitmap.recycle();
colorOutput.copyTo(outBitmap);
displayBitmap(outBitmap);
를이 코드는 이미지에 매우 추한 유물을 생산하는 (병렬 레드 라인) 및 나는 ScriptGroup를 사용하려고하면 대신 단순히 여기
흐림 내장 함수가 실행 된 후에'bmp.recycle() '을 호출하지 않으셨습니까? 이 호출은'Bitmap' 객체 뒤에 네이티브 버퍼를 비우지 만 나중에 컬러 필터를 위해'outBitmap'을 설정할 때 그 객체가 다시 사용됩니다. –
@LarrySchiefer 흠, 마무리가 끝난 후에 만 재활용하는 것이 현명 할 수도 있습니다. 감사 ! 사실, 나는이 그룹을 일하게하는 방법을 발견했다. 이 ScriptGroup + Intrinsic 케이스에 버그가있는 것 같습니다. – Teovald