2015-10-02 2 views
0

Я хочу реализовать тип размытия, показанный на рисунке ниже. У меня есть растровое изображение, и я хочу реализовать это размытие по сторонам, чтобы сделать его квадратным, как встроенная функция iPhone, чтобы соответствовать изображению WhatsApp или Instagram. До сих пор я был в состоянии заполнить цвет в тех краях, используя Color.Blue и т.д.Как размыть края растрового изображения в соответствии с квадратом, как квадрат размытия или встроенная функция iphone

Для получения дополнительной информации: How to create a square bitmap from a rectangular bitmap in Android

Я хочу, чтобы заполнить эту белую стороны в изображении на этот вопрос с размытой частью.

Blur

+1

Это не что иное, как: размытие на полное изображение, то накладку unblurred но обрезанные версии (по высоте) добавляется к нему. –

+0

'Divide et impera' должно быть понятным для каждого разработчика. В нескольких словах каждая проблема может быть превращена в более мелкие. Найдите учебник быстрого размытия, учебник по урокам и учебник по наложению изображений. соедините их, и все готово. –

+0

Привет, я пытался это сделать, у меня размытое изображение и пустой квадрат растрового изображения, и я заполняю прямоугольник или исходное изображение в этом, и эти стороны остаются. Можете ли вы помочь мне в выборе этих пикселей из краев размытого изображения, используя getPixel (x, y). только боковые пиксели с dmesnions (ширина + высота/2) –

ответ

0

Его размытый версия того же изображения показаны в фоновом режиме. Следующий код дает вам размытый эффект одного и того же изображения. Отрегулируйте BLUR_RADIUS для амплитуды эффекта.

public class BlurBuilder { 
    private static final float BITMAP_SCALE = 0.4f; 
    private static final float BLUR_RADIUS = 20f; 

    public static Bitmap blur(Context context, Bitmap image) { 
     int width = Math.round(image.getWidth() * BITMAP_SCALE); 
     int height = Math.round(image.getHeight() * BITMAP_SCALE); 

     Bitmap inputBitmap = Bitmap.createScaledBitmap(image, width, height, false); 
     Bitmap outputBitmap = Bitmap.createBitmap(inputBitmap); 

     RenderScript rs = RenderScript.create(context); 
     ScriptIntrinsicBlur theIntrinsic = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); 
     Allocation tmpIn = Allocation.createFromBitmap(rs, inputBitmap); 
     Allocation tmpOut = Allocation.createFromBitmap(rs, outputBitmap); 
     theIntrinsic.setRadius(BLUR_RADIUS); 
     theIntrinsic.setInput(tmpIn); 
     theIntrinsic.forEach(tmpOut); 
     tmpOut.copyTo(outputBitmap); 

     return outputBitmap; 
    } 
} 

Source