How to blur background images in Android

前端 未结 10 2147
借酒劲吻你
借酒劲吻你 2020-11-30 22:12

What is the best way to blur background images like the image below? I saw some code and libraries but their are a couple of years old or like BlurBehind library, but it doe

10条回答
  •  感情败类
    2020-11-30 22:44

    Try below code.. Put This Code in On Create..

     if (android.os.Build.VERSION.SDK_INT > 9) {
                StrictMode.ThreadPolicy policy =
                        new StrictMode.ThreadPolicy.Builder().permitAll().build();
                StrictMode.setThreadPolicy(policy);
            }
           Url="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTIur0ueOsmVmFVmAA-SxcCT7bTodZb3eCNbiShIiP9qWCWk3mDfw";
    //        Picasso.with(getContext()).load(Url).into(img_profile);
    //        Picasso.with(getContext()).load(Url).into(img_c_profile);
    
            bitmap=getBitmapFromURL(Url);
            Bitmap blurred = blurRenderScript(bitmap, 12);//second parametre is radius
            img_profile.setImageBitmap(blurred);

    Create Below Methods.. Just Copy Past..

     public static Bitmap getBitmapFromURL(String src) {
            try {
                URL url = new URL(src);
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                connection.setDoInput(true);
                connection.connect();
                InputStream input = connection.getInputStream();
                Bitmap myBitmap = BitmapFactory.decodeStream(input);
                return myBitmap;
            } catch (IOException e) {
                // Log exception
                return null;
            }
        }
        @SuppressLint("NewApi")
        private Bitmap blurRenderScript(Bitmap smallBitmap, int radius) {
    
            try {
                smallBitmap = RGB565toARGB888(smallBitmap);
            } catch (Exception e) {
                e.printStackTrace();
            }
    
    
            Bitmap bitmap = Bitmap.createBitmap(
                    smallBitmap.getWidth(), smallBitmap.getHeight(),
                    Bitmap.Config.ARGB_8888);
    
            RenderScript renderScript = RenderScript.create(getActivity());
    
            Allocation blurInput = Allocation.createFromBitmap(renderScript, smallBitmap);
            Allocation blurOutput = Allocation.createFromBitmap(renderScript, bitmap);
    
            ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(renderScript,
                    Element.U8_4(renderScript));
            blur.setInput(blurInput);
            blur.setRadius(radius); // radius must be 0 < r <= 25
            blur.forEach(blurOutput);
    
            blurOutput.copyTo(bitmap);
            renderScript.destroy();
    
            return bitmap;
    
        }
    
        private Bitmap RGB565toARGB888(Bitmap img) throws Exception {
            int numPixels = img.getWidth() * img.getHeight();
            int[] pixels = new int[numPixels];
    
            //Get JPEG pixels.  Each int is the color values for one pixel.
            img.getPixels(pixels, 0, img.getWidth(), 0, 0, img.getWidth(), img.getHeight());
    
            //Create a Bitmap of the appropriate format.
            Bitmap result = Bitmap.createBitmap(img.getWidth(), img.getHeight(), Bitmap.Config.ARGB_8888);
    
            //Set RGB pixels.
            result.setPixels(pixels, 0, result.getWidth(), 0, 0, result.getWidth(), result.getHeight());
            return result;
        }

提交回复
热议问题