赞
踩
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())));
插入方法的后面两个参数对应数据库里的两个字段。插入后要提醒手机进行对这个文件的扫描更新,否则插入无效
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。