2016-10-21 5 views
1

Я использую ScriptIntrinsicBlur, чтобы размыть одно из моих растровых изображений, которое фактически заполнено одним SOLID COLOR. Но эффект размытия, который я получаю, действительно непрактичен. Пожалуйста, проверьте изображение ниже. Белая часть - это растровое изображение, которое размыто. Растровое изображение фактически заполняет все окно сплошным цветом.ScriptIntrinsicBlur создает несоответствующее размытие

enter image description here

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

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; 

} 

Я следовал учебник здесь Link To Tutorial

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

+0

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

+0

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

ответ

1

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

Try после этого урока: http://allegro.tech/2015/08/android-fogger.html

или прыгать прямо в библиотеке: https://github.com/allegro/fogger

+0

Спасибо за ссылку. Этот выглядит хорошо для меня. –

+0

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

+0

Конечно, опубликует их после завершения. Библиотека выглядит хорошо и хорошо. Спасибо за ссылку –