使用Renderscript和超过25个半径的Android模糊位图

时间:2016-02-21 17:58:05

标签: android bitmap blur renderscript

我用Androids Rederscript模糊了一个位图

try {

但图像不够模糊。 是否有可能模糊半径超过25的图像。 当我多次调用模糊功能时,图像会像单个函数调用一样模糊。所以这也不起作用。
谢谢您的帮助。

2 个答案:

答案 0 :(得分:11)

  1. 将图像缩小4-8倍。
  2. 以25像素半径运行模糊。
  3. 缩放至原始大小。

答案 1 :(得分:8)

我知道你说多次运行它不起作用,但这就是我正在做的事情。

Bitmap inputBitmap = Bitmap.createScaledBitmap(artistImage, artistImage.getWidth(), artistImage.getHeight(), false);
Bitmap outputBitmap = Bitmap.createBitmap(inputBitmap);

RenderScript rs = RenderScript.create(context);

for (int i = 0; i < 10; i++){
    final Allocation input = Allocation.createFromBitmap(rs, outputBitmap); //use this constructor for best performance, because it uses USAGE_SHARED mode which reuses memory
    final Allocation output = Allocation.createTyped(rs, input.getType());
    final ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));

    script.setRadius(25F);
    script.setInput(input);
    script.forEach(output);
    output.copyTo(outputBitmap);
}

您可能多次在普通源图像上运行模糊,显然无法完成任何操作。这对我有用,并且可以根据i的内容将其模糊不清。