ScriptIntrinsicBlur генерирует неуместное размытие

#android #bitmap #renderscript

#Android #растровое изображение #renderscript

Вопрос:

Я использовал ScriptIntrinsicBlur для размытия одного из моих растровых изображений, которое на самом деле заполнено одним СПЛОШНЫМ ЦВЕТОМ. Но эффект размытия, который я получаю, действительно неуместен. Пожалуйста, проверьте изображение ниже. Белая часть на самом деле является растровым изображением, которое я размыл. Растровое изображение фактически заполняет все окно сплошным цветом.

введите описание изображения здесь

Ниже приведен возможный код для размытия.

 static Bitmap blurBackground(Context context, int color, int width, int height){
    Log.d("AppLock","RENDER DONE in "   System.currentTimeMillis());

    Bitmap bitmap = Bitmap.createBitmap(200,200, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    canvas.drawColor(color);
    canvas.save();

    Bitmap blurredBitmap = bitmap.copy(Bitmap.Config.ARGB_8888,true);
    RenderScript renderScript = RenderScript.create(context);

    Allocation inputAllocation = Allocation.createFromBitmap(renderScript,blurredBitmap, Allocation.MipmapControl.MIPMAP_FULL
            ,                   Allocation.USAGE_SHARED);
    Allocation outputAllocation = Allocation.createTyped(renderScript,inputAllocation.getType());

    ScriptIntrinsicBlur bluerScript = ScriptIntrinsicBlur.create(renderScript,Element.A_8(renderScript));
    bluerScript.setInput(inputAllocation);
    bluerScript.setRadius(15f);
    bluerScript.forEach(outputAllocation);
    outputAllocation.copyTo(blurredBitmap);
    bitmap.recycle();
    renderScript.destroy();
    Log.d("AppLock","RENDER DONE in "   System.currentTimeMillis());
    return blurredBitmap;

}
  

Я следовал руководству отсюда, Ссылка на руководство

Я просмотрел множество сообщений здесь, и я знаю, что я должен использовать ARGB_8888 для сценария рендеринга. Также я попытался изменить элемент на Element.U8_4() . Но то, что он делает, это просто возвращает мне растровое изображение размером 200×200 пикселей, и оно фактически заполняет все окно. Я не знаю, что я делаю не так. Помощь была бы высоко оценена.

Комментарии:

1. Я не понимаю. Если вы размываете сплошной цвет, вы получите сплошной цвет. в чем смысл? или я чего-то недопонимаю?

2. @Saehun Sean О, я действительно не понимаю, как работает размытие. Я хотел бы получить аналогичный эффект от изображения по ссылке. imgur.com/5hxYziV

Ответ №1:

Я думаю, что вы имеете в виду как затемнение, так и размытие фона, а не просто размытие сплошного цвета.

Попробуйте следовать этому руководству:http://allegro.tech/2015/08/android-fogger.html

или перейдите прямо в библиотеку:https://github.com/allegro/fogger

Комментарии:

1. Извините, что не поместил здесь подробный код. Я никогда не использовал эту библиотеку, поэтому не могу рассказать вам, как именно это работает. Рад, что это помогло. Если у вас есть время, не могли бы вы любезно опубликовать свой код в качестве ответа, чтобы, даже если ссылка каким-то образом будет уничтожена, ответ был таким же? Хорошая практика для ответа, но я работаю над lol

2. Обязательно опубликую их после завершения. Библиотека выглядит хорошо. Спасибо за ссылку