412_两个bitmap重叠覆盖





两个bitmap重叠覆盖


现在要把一个小的bitmap覆盖到一个大的bitmap的中心


形成一个新的bitmap


先固定2个bitmap的大小


Bitmap bg1 = BitmapFactory.decodeResource(getResources(), R.drawable.bg1);
Bitmap head1 = BitmapFactory.decodeResource(getResources(), R.drawable.head1);
Bitmap bg = compressBitmapToGivenWidthAndHeight(bg1, 200, 200);
Bitmap head = compressBitmapToGivenWidthAndHeight(head1, 40, 40);


    public static Bitmap compressBitmapToGivenWidthAndHeight(Bitmap bitmap, double newWidth, double newHeight) {


        //获取这个图片的宽和高
        float width = bitmap.getWidth();
        float height = bitmap.getHeight();


        //创建操作图片用的matrix对象
        Matrix matrix = new Matrix();


        //计算宽高缩放率
        float scaleWidth = ((float) newWidth) / width;
        float scaleHeight = ((float) newHeight) / height;


        //压缩Bitmap
        matrix.postScale(scaleWidth, scaleHeight);
        Bitmap newBitmap = Bitmap.createBitmap(bitmap, 0, 0, (int) width, (int) height, matrix, true);


        return newBitmap;
    }




然后创建新的bitmap


        Bitmap bitmap = Bitmap.createBitmap(200, 200, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        canvas.drawBitmap(bg, 0, 0, null);
        canvas.drawBitmap(head, 80, 80, null);


这样新的bitmap就有了


可以再把这个bitmap输出到本地
saveBitmapToLocal(bitmap, "/sdcard/abc.png");




    public static boolean saveBitmapToLocal(Bitmap bitmap, String path) {
        
        //根据路径创建File
        File file = new File(path);
        
        //如果这个路径存在文件,就删除它
        if (file.exists()) {
            file.delete();
        }
        
        try {
            
            //创建文件输出流
            FileOutputStream out = new FileOutputStream(file);
            
            //输出图片
            boolean compress = bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
            
            //保存成功了
            if (compress) {
                return compress;
            }
            
            //刷新流,关流
            out.flush();
            out.close();
            
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        //保存失败了
        return false;
    }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值