入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

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

创建时间:2017-02-21 投稿人: 浏览次数:838
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())));
插入方法的后面两个参数对应数据库里的两个字段。插入后要提醒手机进行对这个文件的扫描更新,否则插入无效
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像