首页 > 代码库 > android+ canvas绘图后保存图片
android+ canvas绘图后保存图片
canvas绘图后保存图片,分两种情况,一种:自己new一个canvas对象。 第二种:在onDraw函数作为参数引入Canvas
第一种情况:
建一个空的bitmap对象,然后在初始化画布时,把它作为参数带入,之后canvas所做的绘图操作,都是在该bitmap上,只要保存该bitmap对象即可。如下代码:画一个蓝色的圆环:
//这边直接用canvas画,然后保存 Bitmap bitmap = Bitmap.createBitmap(700,700, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); canvas.drawColor(Color.WHITE); Paint paint = new Paint(); paint.setAntiAlias(true);//设置抗锯齿 paint.setStrokeWidth(7);//设置笔触宽度 paint.setStyle(Paint.Style.STROKE); //画奥运五环 paint.setColor(Color.BLUE); canvas.drawCircle(150,150,100,paint); //绘制蓝色圆环 canvas.save(Canvas.ALL_SAVE_FLAG); //保存 canvas.restore(); // 存储 File sdRoot = Environment.getExternalStorageDirectory(); String save_path = sdRoot.getAbsolutePath() + "/DCIM/100MEDIA/114.jpg"; try { bitmap.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(new File(save_path))); } catch (FileNotFoundException e) { e.printStackTrace(); }
第二种情况:
重点就是setDrawingCacheEnabled(true); 和 getDrawingCache()这两个函数
public MyView(Context context) { super(context); //这函数是要打开图形缓存,这样才能getDrawingCache setDrawingCacheEnabled(true); }
protected void onDraw(Canvas canvas){ canvas.drawColor(Color.WHITE); Paint paint = new Paint(); paint.setAntiAlias(true);//设置抗锯齿 paint.setStrokeWidth(7);//设置笔触宽度 paint.setStyle(Paint.Style.STROKE); //画一个环 paint.setColor(Color.BLUE); canvas.drawCircle(150,150,100,paint); //绘制蓝色圆环 canvas.save(Canvas.ALL_SAVE_FLAG); //保存 canvas.restore(); // 存储 //将canvas里的draw保存下来 File sdRoot = Environment.getExternalStorageDirectory(); String save_path = sdRoot.getAbsolutePath() + "/DCIM/100MEDIA/113.jpg"; try { getDrawingCache().compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(new File(save_path))); } catch (Exception e) { Log.e("Error--------->", e.toString()); } super.onDraw(canvas); }
android+ canvas绘图后保存图片
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。