如何将SurfaceView中的Canvas保存为Bitmap?

普通的Canvas可以通过下面的方法来将绘制内容保存为Bitmap

 Bitmap bitmap = new Bitmap(width, height, Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawXXX

但问题是,SurfaceView中Canvas是通过lockCanvas获取的,请问这种情况下,该如何将Canvas保存为Bitmap呢??

1个回答

你可以自己写个SurfaceView子类 拦截一下onDraw

如果你是用来摄像头抓图的话直接Camera.setPreviewCallback 能获取图片流

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
将Canvas保存为一个bitmap
[code="java"]int w = 320,h = 240; String mstrTitle = “感受Android带给我们的新体验”; Bitmap mbmpTest = Bitmap.createBitmap(w,h, Config.ARGB_8888); Canvas canvasTemp = new Canvas(mbmpTest); canvasTemp.drawCol...
如何将当前视图的图像保存为Bitmap
我的工程是单文档的,在视图上有幅图像,如何才能保存为Bitmap格式的?rn试了好多次就是不成...
如何将自定义控件保存为位图(bitmap)?高手请进!
用自定义控件实现了画图的功能,虽然可以在onpaint中设置重绘,但是这样程序运行太慢,于是想把当前控件保存为位图,再调用!不知这样可否行得通,请高手指教!
surfaceView实现手写板重播绘制轨迹,保存为Bitmap
自定义SurfaceView 实现手写板功能,绘画流畅不卡顿。可保存为Bitmap,可重现绘画轨迹。
获取surfaceview的canvas
我要把一个surfaceview的内容保存成图片应该怎么做rnsurfaceholder.lockcanvas具体有什么功能rn必须在实现runable接口的线程中调用吗
如何将基于Bitmap的graphics中的内容保存为bmp文件?急~
我建立了一个基于bitmap的graphics,并在其中进行了画图等操作,现在想把最后画好的图存为*.bmp文件,请各位大虾赐教,不胜感激!!
Bitmap保存为文件
简单的HBitmap保存为文件的示例工程。
surfaceView 如何实现 bitmap的移动
我想采用:局部刷新rnrn而不是将整个的 surfaceView 全部清空, 然后重新绘制,rnrn-------------rnrn请问有啥好的解决办法么?rnrn
SurfaceView实现canvas中的图形上下滚动
由于移动设备屏幕通常比较小,可能不能满足工程中整个图形的显示,我找了很久就是没找到在surfaceView中实现canvas上下滚动。解决此问题我认为有两种思路,一种思路根据手的滑动,动态的绘制图形,即不断的重复清屏和绘制;另一种思路是借助ScrollView,设置surfaceView的高宽(注意:默认情况下surfaceView的高和宽即是canvas的高和宽,也可以自己修改)。第二种思路实现...
html页面保存为canvas图片
本代码库可以将html页面或者元素导出为canvas图片。
Canvas与Bitmap画图的问题
这是自定义的一个View.做为涂鸦用的,两个问题,1.怎么把mBitmap放到画板中间,并且整个画板都可以执行画的操作,因为目前来说R.drawable.bg在左上角并且只能在图片上做画的操作,空白处不能。2.另一个是怎么作清除画板上的已经画的东西和撤销功能。知道的请说下,成分感谢rn代码如下:rnpublic class CanvasView extends View rnrn private Bitmap mBitmap;rn private Canvas mCanvas;rn private Path mPath;rn private Paint mBitmapPaint;rn private Paint mPaint;rnrn public CanvasView(Context c) rn super(c);rn mPaint = new Paint();rnrn mBitmap = BitmapFactory.decodeResource(getResources(),rn R.drawable.bg).copy(Bitmap.Config.ARGB_8888, true);rn // mBitmap = Bitmap.createBitmap(300, 400, Bitmap.Config.ARGB_8888);rn // mBitmap = Bitmap.createBitmap(mBitmap);rn //Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.bg);rn mBitmap = Bitmap.createBitmap(mBitmap , 0, 0, 300, 400);rnrn mCanvas = new Canvas(mBitmap);rn mPath = new Path();rn mBitmapPaint = new Paint(Paint.DITHER_FLAG);rnrn mPaint.setAntiAlias(true);rn mPaint.setDither(true);rn mPaint.setColor(0xff000000);rn mPaint.setStyle(Paint.Style.STROKE);rn mPaint.setStrokeJoin(Paint.Join.ROUND);rn mPaint.setStrokeCap(Paint.Cap.ROUND);rn mPaint.setStrokeWidth(5);rn rnrn @Overridern protected void onSizeChanged(int w, int h, int oldw, int oldh) rn super.onSizeChanged(w, h, oldw, oldh);rn rnrn @Overridern protected void onDraw(Canvas canvas) rn canvas.drawColor(0xFFFFFFFF);// set background colorrnrn canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);rnrn canvas.drawPath(mPath, mPaint);rn rn}
关于BITMAP,Canvas,SOCKET。。。。。。
可不可以把Canvas转换为BITMAP,,,如何用SERVER端的SOCKET发送BITMAP???
android canvas(bitmap)失败
目前使用canvas在surfaceview上画路径n需要对路径进行缩放处理n所以想把canvas画的图放在bitmap上进行缩放处理n但是n使用canvas(bitmap)后,画出来的点,并没有显示在bitmap上是什么原因呀
canvas 转换成bitmap
android里面 canvas 转换成bitmap
Canvas与Bitmap求解
求解:rn[code=Java]rn//bitmap为一个大图rn//Canvas crn//Handler handlerrn//ra为一个Runnable用来不断执行下面的操作rnbm = Bitmap.createBitmap(bitmap, 0, i*20, 480, 20);rnLog.w("draw", "draw ok " + i);rnc.save();rnc.drawBitmap(bm, 0, i * 20, paint);rni++;rnc.restore();rnhandler.postDelayed(ra, 10);rn[/code]rn循环执行上面的操作画出来的效果却如下:rn[img=http://hi.csdn.net/attachment/201111/24/2591050_1322121341xX04.jpg][/img]
Android Canvas Bitmap
用Android Canvas Bitmap 绘图rn问题:rn 1 Canvas生成一个Bitmap时,这时候已经占内存了吗?还是往Bitmap上画东西的时候才分配内存?rn 如果占内存的话,Canvas生成一个Bitmap,最大能生成多大的Bitmap?rn 且如何控制所占的内存?rnrn 2 根据上面1的问题,我绘制一个内存极限最大的Bitmap,rn 想把这个Bitmap分区域绘制 然后输出到屏幕 如何实现???rnrn望各位高手不吝赐教 提供宝贵思路!!!!
关于android的Canvas(Bitmap)问题
[size=16px]rn小弟我刚学android程序开发,使用android studio开发工具。最新学习了一个在图片上涂鸦的小程序,但是发现程序不能运行。程序没有语法错误,只是用模拟器无法运行,显示“has stopped”,我把程序安装在手机也是闪退。后来检查是:canvas = new Canvas(o_Bitmap); 出问题。查了一个下午的资料,也找不出这里有什么错误,附上代码给各位大哥帮忙看看,谢谢!rn[/size]rnrn[size=16px]activity_main.xml[/size]rn[code=html]rnrnrnrn rn rn rn rn rn[/code]rnrn[size=16px]myHandWrite.java (自定义的组件)[/size]rn[code=java]rnpackage com.zhuneen.zhu_4_5;rnrnimport android.content.Context;rnimport android.graphics.Bitmap;rnimport android.graphics.BitmapFactory;rnimport android.graphics.Canvas;rnimport android.graphics.Color;rnimport android.graphics.Paint;rnimport android.util.AttributeSet;rnimport android.view.MotionEvent;rnimport android.view.View;rnrnpublic class myHandWrite extends View rn Paint paint = null; //定义画笔rn Bitmap originalBitmap = null; //存放原始图像rn Bitmap new1_Bitmap = null; //存放从原始图像复制的位图图像rn Bitmap new2_Bitmap = null; //存放处理后的图像rn float startX = 0, startY = 0; //画线的起点坐标rn float clickX = 0, clickY = 0; //画线的终点坐标rn boolean isMove=true; //设置是否画线的标记rn boolean isClear = false; //设置是否清除涂鸦的标记rn int color = Color.GREEN; //设置画笔的颜色(绿色)rnrn public myHandWrite(Context context, AttributeSet attrs) rn super(context, attrs);rn originalBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.cy);//从资源中获取原始图像rn new1_Bitmap = Bitmap.createBitmap(originalBitmap);//建立原始图像的位图rn rn public void clear() //清除涂鸦rn isClear = true;rn new2_Bitmap = Bitmap.createBitmap(originalBitmap);rn invalidate();rn rn @Overridern protected void onDraw(Canvas newCanvas) //显示绘图rn super.onDraw(newCanvas);rn newCanvas.drawBitmap(HandWriting(new1_Bitmap), 0, 0,null);rn rn public Bitmap HandWriting(Bitmap o_Bitmap)//记录绘制图形rn rn Canvas canvas;rn if(isClear)//创建绘制新图形的画布rn rn canvas = new Canvas(new2_Bitmap);//检查发现这条语句有问题,但是语法是正确的。rn rn else//创建绘制原图形的画布rn canvas = new Canvas(o_Bitmap);//检查发现这条语句有问题,但是语法是正确的。rn rn paint = new Paint();rn paint.setStyle(Paint.Style.STROKE);rn paint.setAntiAlias(true);rn paint.setColor(color);rn paint.setStrokeWidth(5);rn if(isMove) rn canvas.drawLine(startX, startY, clickX, clickY, paint);//在画布上画线条rn rn startX = clickX;rn startY = clickY;rn if(isClear)rn rn return new2_Bitmap;//返回新绘制的图像rn rn return o_Bitmap;//若清屏,则返回原图像rn rn @Overridern public boolean onTouchEvent(MotionEvent event)//定义触摸屏事件rn rn clickX = event.getX();//获取触摸坐标位置rn clickY = event.getY();rn if(event.getAction() == MotionEvent.ACTION_DOWN)//按下屏幕时无绘图rn rn isMove = false;rn invalidate();rn return true;rn rn else if(event.getAction() == MotionEvent.ACTION_MOVE)//记录在屏幕上划动的轨迹rn rn isMove = true;rn invalidate();rn return true;rn rn return super.onTouchEvent(event);rn rnrn[/code]rnrn[size=16px]MainActivity.java [/size]rn[code=java]rnpackage com.zhuneen.zhu_4_5;rnrnimport android.app.Activity;rnimport android.os.Bundle;rnimport android.view.View;rnimport android.widget.Button;rnrnpublic class MainActivity extends Activity rn private myHandWrite handWrite=null;rn private Button clear=null;rn @Overridern protected void onCreate(Bundle savedInstanceState) rn super.onCreate(savedInstanceState);rn setContentView(R.layout.activity_main);rn handWrite = (myHandWrite) findViewById(R.id.handwriteview);//关联View组件rn clear = (Button)findViewById(R.id.clear);rn clear.setOnClickListener(new mClick());rn rn private class mClick implements View.OnClickListenerrn rn public void onClick(View v) rn handWrite.clear();//清屏rn rn rnrnrn[/code]
Android—BitMap与Canvas学习笔记
Android—BitMap与Canvas学习笔记
Canvas和Bitmap的关系
Canvas和Bitmap的关系
android surfaceview canvas 画线问题
rn最近在做一个使用surfaceview绘制心电图的demorn单片机采集心电数据通过BLE传到手机,我接收数据解析以后将心电图实时显示出来。rn每秒有250个心电数据,我查到android手机大部分屏幕刷新率是60bpsrn所以,就想着每10个数据调用一次lockcanvas一次绘制十条线,这样每秒刷新25次。rn但是,现在图形绘制了出来,每10个数据之间的连线出现了间断点。rn如图:rn[img=https://img-bbs.csdn.net/upload/201512/08/1449543965_66592.jpg][/img]rn仔细看,会发现线段直接存在断点。rn绘图中,我会将上一组数据的最后一个数据和下一组的第一个数据画一条线(间断点就是这条线没画的感觉,但是将这条线去掉,间断点会看起来更大)。rn这里,我用LOG输出每个点的坐标值,发现横坐标是不存在间隔的。
SurfaceView清空Canvas如何操作
public void ClearDraw(){ Canvas canvas = null; try{ canvas = surfaceHolder.lockCanvas(null); canvas.drawColor(Color.WHITE); canvas.drawColor(Color.TRAN
android将LinearLayout中的内容保存为Bitmap。
前几天,和别人探讨问题的时候,突然了解到还有这个功能。他是要合成LinearLayout中的多个图片,如果图片合成,就很麻烦,所以直接保存一个LinearLayout。 现在想起来,保存LinearLayout也那样,因为LinearLayout也是一个view,我保存这个view难道不行?代码很简单。 public Bitmap createViewBitmap(View...
andriod bitmap保存为本地图片求助
[img=https://img-bbs.csdn.net/upload/201906/09/1560069302_581364.png][/img]代码如上,但是好像没啥效果
android bitmap保存为文件及读取
android bitmap保存为文件及读取
在SurfaceView/自定义View中利用手势绘制不同颜色不同形状的图形并且保存为Bitmap位图
最近准备做一个涂鸦的功能,就是利用手势在图片上绘制图片,目前对于APP开发还是比较火的,最近刚好项目需要就自己准备研究研究了。一开始的第一感觉我就是用的自定义View,利用onDraw中的Canves根据手势来进行绘制,后来查阅了网上的资料说利用自定义SurfaceView的效率会更高点,因此,自己就尝试利用自定义SurfaceView来研究研究。因为时间原因我就不详细的描述了,我主要描述一下问题解
如何将canvas对象或bitmap对象生成一个BMP文件?
简单的说,是想将view画的结果保存到一张图片里.该如何做?求助!
请问如何将Canvas对象里的绘制的东西保存为.jpg文件格式?
请问如何将Canvas对象里的绘制的东西保存为.jpg文件格式?rn或是保存成黑/白格式的.bmp文件?
html页面使用canvas保存为图片
html2canvas 官方GitHub https://github.com/niklasvh/html2canvas Canvas2Image.js 第三方库 https://github.com/hongru/canvas2image    生成图片的清晰度取决于html转换成的canvas的清晰度: 将canvas的属性width和height属性放大为2倍(或者设置为devic...
SurfaceView将绘制的图形保存为图片
基本思路: 1.通过SurfaceView绘制图形,我们可以得到绘制图形后的path 2.启用新的canvas,将path绘制到canvas 3.将bimap存到sd卡 //新建bitmap Bitmap bitmap = Bitmap.createBitmap(DpUtil.getScreenWidth(mContext), DpUtil.getScreenHeight(...
图形图像处理 补间 逐帧 属性动画 SurfaceView Bitmap
package com.example.tyxiong.myapplication;import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Mat
如何将access中的bitmap存到oracle中?
我有一ACCESS 数据库存了很多图像现想把他们存到oracle数据库中,请教如何办?
如何将字符串保存为二进制文件
如何将字符串保存为二进制文件rn例如: rn FILE *fp;rn char a[3]="dd";rn fp=fopen(fp,"my.save","wb");rn fwrite(a,2,fp);rn fclose(fp);rn但是这样存出来的文件是 文本的,就是说,我可以用记事本打开的.rn谢谢
如何将报表保存为图片
如何将报表保存为图片
如何将水晶报表保存为文本文档?
水晶报表自带的保存类型中没有文本文档,如何实现存为文本文档?rn在线等,急!!!
如何将view转换成bitmap
推荐; http://blog.csdn.net/chenshijun0101/article/details/38022789
如何将movieclip转换成BitMap
var _loc_4:MovieClip = new MovieClip();rnvar mBit:BitmapData = new BitmapData(_loc_4.width, _loc_4.height, true, 0xffffff);rnmBit.draw(_loc_4);rnvar arcupbmp:Bitmap = new Bitmap(mBit);rnstage.addChild(arcupbmp);rnarcupbmp_4.x = 400;rnarcupbmp_4.y = 400;rnrn大概代码如上,就是MC中放了一些东西,现在我想将其画到一个BitMap中,但是发现这个BitMap显示不出MC中的东西。。 有什么办法么? rn
如何将图片保存为矢量图???
如何将图片保存为矢量图???
如何将html模板保存为图片
问题描述:做项目的过程中,遇到这样一个需求,需要把系统中的某个业务表格,保存为图片,而不是保存整个网页,便于查看。 解决方案: 1.首先把要保存为图片的部门html(即业务表单),抽取为单独的html表格模板   2.然后里面的数据使用特殊的${fhf_z2_k} 进行填充模板 3,读取指定位置的html模板文件,读取为string字符串   4.将模板字符串中的要替换的内容进行替换 
如何将工作簿保存为通用模板
【课程内容】<br />n所涉及的具体内容包括输入录入技巧、排序、筛选、函数公式、数据透视表、图表、汇总等功能应用,并结合大量的企业应用实例,以互动的方式将解决思路和操作过程逐一呈现。<br /><br />n【课程特点】<br />n1、190节大容量课程:包含了Excel软件的大部分知识点;<br />n2、创新的教学模式:手把手教您电子表格,一看就懂,一学就会;<br />n3、完美贴心的操作提示:让您的眼睛始终处于操作的焦点位置,不用再满屏找光标;<br />n4、语言简洁精练:瞄准问题的核心所在,减少对思维的干扰,并节省您宝贵的时间;<br />n5、视频短小精悍:即方便于您的学习和记忆,也方便日后对功能的检索;<br /><br /><br />n【互动教程的特点】<br />n•互动性<br />n-首创互动式学习,不同于以往的任何一种学习方式,不看视频不看书,轻松,高效,好玩<br />n-手把手教学,一步步引导操作,实时看到效果,就像自己在操作一样,信心满满<br />n-即点即学,课程内可根据自己的需要,随时调整界面上方进度条,重复操作,加强记忆<br />n-强大的学习跟踪系统,对整体学习进度一目了然,及时调整学习计划,查疑补漏<br /><br />n•人性化<br />n-界面设计简洁,操作简单,没有繁琐的按钮,一点就可直接进入学习状态<br />n-贴心小提示,读懂你的小心思,零基础快速入门,学习无压力,不尴尬<br />n-超多原理解析,疑问解答,如同专业Excel导师亲身指导,不翻书快速记忆,Excel小白迅速成长<br /><br />n•实用性<br />n-课程由浅入深,操作过程详细剖析,一步步模仿,马上就会做。<br />n-涉及排序、筛选、函数公式、数据透视表、图表、汇总等核心功能的课程编排,通俗易懂不头疼<br />n-互动+观看视频,两种学习方式切换,上班路上,地铁里享受随时随地自由学习<br /><br />n通过本课程的学习,您将逐步掌握Excel 2016的各项功能和使用技巧。从而提高您的办公效率,早做完,不加班!!!<br /><br />
如何将表保存为存储过程
我有一张表PM_GOOD rnrn表结构为 rnrnfid fcode fsumrn1 xx22 100rn2 xx23 100rnrnrn我需要将上述表保存为一个存储过程。 以便于调用存储过程就能生成一个临时表PM_TMPT.
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件