Androd Camera Yuv Jepg bmp

2024-04-09 06:32
文章标签 camera yuv bmp androd jepg

本文主要是介绍Androd Camera Yuv Jepg bmp,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

从 摄像头 预览 图像中获取yuv(或者格式数据) 转换成 jpeg bmp格式
转成bmp 格式,网上有人说,用 rawByteArray2RGBABitmap2 直接转的效率更高

Camera.PreviewCallback mPreviewCallback = new Camera.PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
decodeToJpeg(data,camera);
}
}

public static void decodeToJpeg(byte[] data,Camera camera){
try {
Size size = camera.getParameters().getPreviewSize();
int format = camera.getParameters().getPreviewFormat();
log(“>>>>>>”+”format = “+ format+”size=”+size.width+”,”+size.height);
YuvImage image = new YuvImage(data, ImageFormat.NV21, size.width,
size.height, null);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
image.compressToJpeg(new Rect(0, 0, size.width, size.height),
80, stream);
byte[] buf = stream.toByteArray();

        log(">>>>>>" + "yuv Size="+data.length+",jpeg Size = "+stream.size()+","+buf.length);stream.close();} catch (Exception e) {e.printStackTrace();}
}public static void yuvToBmp(byte[] data,Camera camera){try {Size size = camera.getParameters().getPreviewSize();int format = camera.getParameters().getPreviewFormat();log(">>>>>>"+"format = "+ format+"size="+size.width+","+size.height);YuvImage image = new YuvImage(data, ImageFormat.NV21, size.width,size.height, null);ByteArrayOutputStream stream = new ByteArrayOutputStream();image.compressToJpeg(new Rect(0, 0, size.width, size.height),80, stream);Bitmap bmp = BitmapFactory.decodeByteArray(stream.toByteArray(), 0, stream.size());log(bmp.getWidth() + " " + bmp.getHeight());log(">>>>>>" + "yuv Size="+data.length+",jpeg Size = "+stream.size());stream.close();bmp.recycle();} catch (Exception e) {e.printStackTrace();}
}public Bitmap rawByteArray2RGBABitmap2(byte[] data, int width, int height) {int frameSize = width * height;int[] rgba = new int[frameSize];for (int i = 0; i < height; i++)for (int j = 0; j < width; j++) {int y = (0xff & ((int) data[i * width + j]));int u = (0xff & ((int) data[frameSize + (i >> 1) * width + (j & ~1) + 0]));int v = (0xff & ((int) data[frameSize + (i >> 1) * width + (j & ~1) + 1]));y = y < 16 ? 16 : y;int r = Math.round(1.164f * (y - 16) + 1.596f * (v - 128));int g = Math.round(1.164f * (y - 16) - 0.813f * (v - 128) - 0.391f * (u - 128));int b = Math.round(1.164f * (y - 16) + 2.018f * (u - 128));r = r < 0 ? 0 : (r > 255 ? 255 : r);g = g < 0 ? 0 : (g > 255 ? 255 : g);b = b < 0 ? 0 : (b > 255 ? 255 : b);rgba[i * width + j] = 0xff000000 + (b << 16) + (g << 8) + r;}Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);bmp.setPixels(rgba, 0 , width, 0, 0, width, height);return bmp;
}

这篇关于Androd Camera Yuv Jepg bmp的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/887410

相关文章

4-4.Andorid Camera 之简化编码模板(获取摄像头 ID、选择最优预览尺寸)

一、Camera 简化思路 在 Camera 的开发中,其实我们通常只关注打开相机、图像预览和关闭相机,其他的步骤我们不应该花费太多的精力 为此,应该提供一个工具类,它有处理相机的一些基本工具方法,包括获取摄像头 ID、选择最优预览尺寸以及打印相机参数信息 二、Camera 工具类 CameraIdResult.java public class CameraIdResult {

做一个用python脚本生成bmp位图的小工具

需求 我有一些用代码生成位图的需求,例如给定一个坐标(x,y),通过一定的逻辑得到对应的颜色值。目的是以这样的方式得到一些用于调试的位图。 实现这个目的有多种方法,不过我最大的期望是—— “易用性” :我希望当我想生成一个位图时,所做的操作达到最小。这意味着: 首先,这个“工具”不是一个纯C++的工程,否则我每次想生成新位图时,都需要打开我的工程,修改代码后,重新编译。换句话说,生成图片的逻

使用FFmpeg的AVFilter转换YUV到RGB

AVFilter 是 FFmpeg 库 libavfilter 的核心组件,提供了一套强大的音视频处理框架,用于对音视频流进行复杂的过滤、转换和效果处理。通过 AVFilter,开发者可以构建自定义的滤镜图(filter graph),实现各种音视频处理任务,如颜色空间转换、缩放、裁剪、特效添加等。 以下是对 AVFilter 的详细介绍,包括其架构、关键概念、使用方法以及示例代码。 1. A

Android Camera系列(三):GLSurfaceView+Camera

人类的悲欢并不相通—鲁迅 Android Camera系列(一):SurfaceView+Camera Android Camera系列(二):TextureView+Camera Android Camera系列(三):GLSurfaceView+Camera 本系列主要讲述Android开发中Camera的相关操作、预览方式、视频录制等,项目结构代码耦合性低,旨在帮助大家能从

CameraManager——Camera的过时替代方法

CameraManager 用于检测,表征和连接的系统服务管理器 CameraDevices。 有关与相机设备通信的更多详细信息,请阅读相机开发人员指南或camera2 包文档。 此类的实例,必须使用能够获得Context.getSystemService(Class)与所述参数CameraManager.class或Context.getSystemService(String)使用参数Co

Android Camera系列(一):SurfaceView+Camera

心行慈善,何需努力看经—《西游记》 本系列主要讲述Android开发中Camera的相关操作、预览方式、视频录制等,项目结构代码耦合性低,旨在帮助大家能从中有所收获(方便copy :) ),对于个人来说也是一个总结的好机会 一. Camera操作 Android系统存在这么多年,google更新了不少API。光是对摄像头的操作目前就有3中API: android.hardware

Android Camera照相机

java代码: [java]  view plain copy package com.Aina.Android;      import java.io.BufferedOutputStream;   import java.io.File;   import java.io.FileNotFoundException;   import java.io.FileOutpu

瑞芯微RK3588 camera驱动总结三调试

一、指令 先介绍一些很有用的指令 1.media-ctl -p -d /dev/media0 用于打印 /dev/media0 设备的媒体管道拓扑结构。媒体管道拓扑结构描述了多媒体设备内部各组件之间的连接关系,包括视频输入、视频输出、编码器、解码器、ISP(图像信号处理器)等组件之间的连接。 media-ctl -d /dev/media1 -e "rkisp_selfpath" med

Surfaceview调用Camera实现拍照

一、Surfaceview的使用        surfaceView的使用主要有三步:继承SurfaceView;获取SurfaceViewHolder;应用Holder更新展示内容。Surfaceview的应用有常用类型及数据展示的Demo。        拍照功能实现思路: <span style="font-size:18px;">1,依据布局,获取Surfaceview对象;2,获

RAW格式转化为BMP

首先先介绍C++中图像数据分配内存方法。   在计算机中图像是一个二维的数字点阵。 比较容易想到的是申请一个二维矩阵来存储图像 如: BYTE image[512][512]; 可以存储一幅512*512个像素的图像,每个像素用一个字节表示,一个字节能表示0-255共256个不同取值。所以这一二维数组比较合适存储灰度图像。   对于二维彩色图像,如果每个像素分别有R,G,B 3个颜色分量,则可以