Bitmap处理的一些方法

    public Bitmap clip()
    {
        Bitmap bitmap = Bitmap.createBitmap(rl_main.getWidth(), rl_main.getHeight(),
                Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        rl_main.draw(canvas);
        bitmap=Bitmap.createBitmap(bitmap, 0,0, rl_main.getWidth(),rl_main.getHeight());
//    bitmap=Bitmap.createBitmap(bitmap, 0,0, getWidth(),getHeight() - ly_share.getHeight());
        return bitmap;
//        View rootView = this.getWindow().getDecorView();
//        rootView.setDrawingCacheEnabled(true);
//        rootView.buildDrawingCache();
//        Bitmap bitmap = rootView.getDrawingCache();
//
//        return bitmap;
    }
    private Bitmap Bytes2Bimap(byte[] data){
        if (yuvType == null)
        {
            yuvType = new Type.Builder(rs, Element.U8(rs)).setX(data.length);
            in = Allocation.createTyped(rs, yuvType.create(), Allocation.USAGE_SCRIPT);

            rgbaType = new Type.Builder(rs, Element.RGBA_8888(rs)).setX(640).setY(480);
            out = Allocation.createTyped(rs, rgbaType.create(), Allocation.USAGE_SCRIPT);
        }

        in.copyFrom(data);

        yuvToRgbIntrinsic.setInput(in);
        yuvToRgbIntrinsic.forEach(out);

        Bitmap bmpout = Bitmap.createBitmap(640, 480, Bitmap.Config.ARGB_8888);
        out.copyTo(bmpout);
        return bmpout;
    }
    public LayerDrawable getLayerDrawable(Bitmap b1,Bitmap b2) {
        Drawable[] array = new Drawable[2];
        array[0] = new BitmapDrawable(b1);
        array[1] = new BitmapDrawable(b2);
        LayerDrawable la = new LayerDrawable(array);
        // 其中第一个参数为层的索引号,后面的四个参数分别为lefttoprightbottom
        la.setLayerInset(0, 0, 0, 0, 0);
        la.setLayerInset(0, 0, 0, 0, 0);
        return la;
    }
    public static Bitmap rotatePicture(Bitmap bitmap, float degrees) {
        Matrix matrix = new Matrix();
        matrix.reset();
        matrix.setRotate(degrees);
        bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),
                bitmap.getHeight(), matrix, true);
//        Matrix matrix1 = new Matrix();
//        matrix1.reset();
//        matrix.postScale(-1,1);//左右翻转
//        bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),
//                bitmap.getHeight(), matrix1, true);
        return bitmap;
    }
    public static Bitmap resizeBitmap(Bitmap bitmap, int width, int height) {
        if (bitmap != null) {
            int w = bitmap.getWidth();
            int h = bitmap.getHeight();
            if (w == width && h == height) { return bitmap; }
            if (w <= 0 || h <= 0) { return bitmap; }
            Double wrate = ((double) width) / w;
            Double hrate = ((double) height) / h;
            if (wrate == 0 || hrate == 0) { return bitmap; }
            Matrix matrix = new Matrix();
            matrix.postScale(wrate.floatValue(), hrate.floatValue());
            return Bitmap.createBitmap(bitmap, 0, 0, w, h, matrix, true);
        }
        return null;
    }
    public Bitmap getAddBitmap(Bitmap backBitmap,Bitmap frontBitmap) {
//        Bitmap newBitmap = null;
//
//        newBitmap = Bitmap.createBitmap(b1);
//        Canvas canvas = new Canvas(newBitmap);
//        Paint paint = new Paint();
//        paint.setAlpha(255);
//
//        int w = b1.getWidth();
//        int h = b1.getHeight();
//
//        int w_2 = b2.getWidth();
//        int h_2 = b2.getHeight();
//
//        canvas.drawRect(0, 0, b1.getWidth(), b1.getHeight(), paint);
//
//        paint = new Paint();
//        paint.setAlpha(100);
//        Xfermode xFermode = new PorterDuffXfermode(PorterDuff.Mode.DST_OVER);
//        paint.setXfermode(xFermode);
//        canvas.drawBitmap(b2, Math.abs(w - w_2) / 2,
//                Math.abs(h - h_2) / 2, paint);
//        canvas.save(Canvas.ALL_SAVE_FLAG);
//        // 存储新合成的图片
//        canvas.restore();
//        return newBitmap;
        if (backBitmap == null || backBitmap.isRecycled()
                || frontBitmap == null || frontBitmap.isRecycled()) {
            Log.e(TAG, "backBitmap=" + backBitmap + ";frontBitmap=" + frontBitmap);
            return null;
        }
        Bitmap bitmap = backBitmap.copy(Bitmap.Config.ARGB_8888, true);
        Canvas canvas = new Canvas(bitmap);
        Rect baseRect  = new Rect(0, 0, backBitmap.getWidth(), backBitmap.getHeight());
        Rect frontRect = new Rect(0, 0, frontBitmap.getWidth(), frontBitmap.getHeight());
        canvas.drawBitmap(frontBitmap, frontRect, baseRect, null);
        return bitmap;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值