그림 모호 처리

1687 단어
RenderScript는 Bitmap을 처리하는 객체로, Drawable의 경우 Bitmap으로 전환한 다음 먼저 처리해야 합니다.그러나 Drawable의 하위 클래스는 여러 가지BitmapDrawable,GradientDrawable 등이 있다
private Bitmap blurDrawable(Drawable drawable, int width, int height) {
        if (Build.VERSION.SDK_INT >= 17) {
//            Bitmap blurTemplate = ((BitmapDrawable) primaryBg).getBitmap();
            Bitmap blurTemplate = drawableToBitmap(primaryBg, width, height);
            RenderScript rs = RenderScript.create(getContext());
            Allocation input = Allocation.createFromBitmap(rs, blurTemplate);
            Allocation output = Allocation.createTyped(rs, input.getType());

            ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
            script.setRadius(20);
            script.setInput(input);
            script.forEach(output);
            output.copyTo(blurTemplate);
            rs.destroy();
            return blurTemplate;
        }
        return null;
    }

    public static Bitmap drawableToBitmap(Drawable drawable, int width, int height) {
        //   drawable   - GradientDrawable -1
//        int w = drawable.getIntrinsicWidth();
//        int h = drawable.getIntrinsicHeight();
        int w = width;
        int h = height;

        //   drawable  
        Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565;
        //   bitmap
        Bitmap bitmap = Bitmap.createBitmap(w, h, config);
        //   bitmap  
        Canvas canvas = new Canvas(bitmap);
        drawable.setBounds(0, 0, w, h);
        //   drawable  
        drawable.draw(canvas);
        return bitmap;
    }

좋은 웹페이지 즐겨찾기