public static Bitmap onStackBlurClip(Bitmap original, int radius) {
        Bitmap bitmap = checkSource(original, radius);

        // Return this none blur
        if (radius == 1) {
            return bitmap;
        }

        int h = bitmap.getHeight();
        int w = bitmap.getWidth();

        final int clipPixels = 1024 * 256;
        float clipScale = (h * w) / clipPixels;
        int minLen = radius + radius + 50;

        if (clipScale >= 2) {
            float itemLen = h / clipScale;
            itemLen = itemLen < minLen ? minLen : itemLen;
            clipScale = h / itemLen;
        }

        if (clipScale < 2) {
            //Jni BitMap Blur
            nativeStackBlurBitmap(bitmap, radius);
        } else {
            if (clipScale > 12)
                clipScale = 12;
            //Jni BitMap Blur
            onStackBlurClip(bitmap, radius, (int) clipScale);
        }

        return (bitmap);
    }
StackBlur By Jni Bitmap
in this we will cut the source bitmap to some parts.
We'll deal(blur) with it one by one. This will reduce the memory consumption.

@param original Original Image
@param radius   Blur radius
@return Image Bitmap
caprice/graphics/src/main/java/net/qiujuer/genius/graphics/Blur.java