Android Camera onPreview中byte[]快速转换为Bitmap<耗时仅需3~4ms>
来源:互联网 发布:excel数据提取软件 编辑:程序博客网 时间:2024/06/05 19:21
Android Camera onPreview中byte[]快速转换为Bitmap
在以前对帧率要求不高时,一直使用BitmapFactory.decodeByteArray来进行处理,耗时非常可观,在只开前摄的情况下处理图像,耗时达到了260ms,下面是以前的处理方式:
YuvImage yuvimage = new YuvImage(yuvData,ImageFormat.NV21, size.width,size.height, null);//data是onPreviewFrame参数提供ByteArrayOutputStream baos = new ByteArrayOutputStream();yuvimage.compressToJpeg( new Rect(0, 0,yuvimage.getWidth(), yuvimage.getHeight()), 100, baos);// 80--JPG图片的质量[0-100],100最高byte[] rawImage =baos.toByteArray();BitmapFactory.Options options = new BitmapFactory.Options();//options.inPreferredConfig = Bitmap.Config.RGB_565; //默认8888//options.inSampleSize = 8;SoftReference<Bitmap> softRef = new SoftReference<Bitmap>(BitmapFactory.decodeByteArray(rawImage, 0,rawImage.length,options));//方便回收Bitmap bitmap = (Bitmap) softRef.get();
在新方法下,仅仅3~4ms就可完成对图像的处理,需要使用Renderscript内联函数,可以更快的转换为YUV图像:
使用到的变量:
private RenderScript rs;private ScriptIntrinsicYuvToRGB yuvToRgbIntrinsic;private Type.Builder yuvType, rgbaType;private Allocation in, out;
在onCreate方法中创建:
rs = RenderScript.create(this);yuvToRgbIntrinsic = ScriptIntrinsicYuvToRGB.create(rs, Element.U8_4(rs));
在onPreviewFrame方法中调用以下方法:if (yuvType == null){ yuvType = new Type.Builder(rs, Element.U8(rs)).setX(dataLength); in = Allocation.createTyped(rs, yuvType.create(), Allocation.USAGE_SCRIPT); rgbaType = new Type.Builder(rs, Element.RGBA_8888(rs)).setX(prevSizeW).setY(prevSizeH); out = Allocation.createTyped(rs, rgbaType.create(), Allocation.USAGE_SCRIPT);}in.copyFrom(data);yuvToRgbIntrinsic.setInput(in);yuvToRgbIntrinsic.forEach(out);Bitmap bmpout = Bitmap.createBitmap(prevSizeW, prevSizeH, Bitmap.Config.ARGB_8888);out.copyTo(bmpout);
个人联系方式:15010399702@163.com
3 0
- Android Camera onPreview中byte[]快速转换为Bitmap<耗时仅需3~4ms>
- Android中Bitmap、Drawable、byte[]转换
- Android中Bitmap、Drawable、byte[]转换 (
- Android中Bitmap、Drawable、byte[]转换(hdp)
- Android中Bitmap、Drawable、byte[]转换
- Android中Bitmap、Drawable、byte[]转换
- Android中Bitmap、Drawable、byte[]转换
- Android中Bitmap、Drawable、byte[]转换
- Android中Bitmap、Drawable、byte[]转换
- Android中Bitmap、Drawable、byte[]转换
- Android中Bitmap、Drawable、byte[]转换
- Android中Bitmap、Drawable、byte[]转换
- android 中byte[] bitmap drawable inputstream的相互转换
- Android中Bitmap, ID,Drawable, Byte之间的转换
- Android 上传图片到服务器时将bitmap转换为byte[]最后转换为String
- Android中View转换为Bitmap!!!!!!!
- Android中View转换为Bitmap等
- Android中View转换为Bitmap!!!!!!!
- [caffe笔记002]:Caffe源码c++调试
- java 标签库 foreach
- 【卸载教程】windows8.1 下完全卸载迈克菲McAfee杀毒软件
- Xcode崩溃日志分析工具symbolicatecrash用法
- JSPatch 基础用法
- Android Camera onPreview中byte[]快速转换为Bitmap<耗时仅需3~4ms>
- JS中关于clientWidth offsetWidth scrollWidth 等的含义
- Express cookie-parser
- java加载顺序
- python Scrapy框架的安装
- Qt QGraphicsItem 添加 gif图片
- tomcat 自定义jre
- 关于loader asyncTaskLoader AsyncTask的理解
- redis集群连接池实例