view转bitmap&&保存图片到本地

1.view转bitmap:   思路是这样的,先获取目标view的宽高并以此来创建一个bitmap,利用这个bitmap构造一个canvas,调用view的draw方法传入这个canvas参数就实现了把view画在了bitmap上。
int width=view.getWidth();
        int height=view.getHeight();
        //获取view的宽高生成一个bitmap
        Bitmap bitmap= Bitmap.createBitmap(width,height, Bitmap.Config.ARGB_8888);

        Canvas canvas=new Canvas(bitmap);
        canvas.drawColor(Color.WHITE);//默认是透明色
        //view.layout(0,0,width,height);
        view.draw(canvas);

需要注意canvas先把背景色画成了白色,不画的话默认是透明的,也就是没有背景。


2.保存图片到本地:

首先当然要获得SD卡的读写权限

把图片存在本地有两种方法,一种是直接插入系统图库,一种是插入指定路径。如果图片仅仅放在一个文件夹里而没有插入图库的话,在图库里浏览图片时就不会看到这张,在qq等软件看最近图片的时候也不会看到。

先说把图片写入指定路径:

//把图片写入本地
        File file=new File(Environment.getExternalStorageDirectory(),"image");
        if (!file.exists()){
            file.mkdir();//创建这个文件夹
        }
        File file2 =new File(file,"myimage.jpg");
        try {
            FileOutputStream stream=new FileOutputStream(file2);
            bitmap.compress(Bitmap.CompressFormat.JPEG,100,stream);
            stream.flush();
            stream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
这里我把一张名为myimage的图片放在了SD根目录下的image文件夹里(有判断,无此文件夹则创建),很好理解,就是用了bitmap的compress方法,压缩质量是百分之百。两次新建file实际上是路径字符串的拼接。


把图片插入到图库里有两种方法,可以传入一个bitmap插入bitmap,也可以传入一张图片的路径来插入。这里我们已经把图片放到手机上,有了一个路径,所以可以直接传这个路径、;

try {
            MediaStore.Images.Media.insertImage(getContentResolver(),file2.getAbsolutePath()
                ,"myimage.jpg",null);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://"+file2.getAbsolutePath())));
插入方法的后面两个参数对应数据库里的两个字段。插入后要提醒手机进行对这个文件的扫描更新,否则插入无效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值