HarmonyOS 鸿蒙Next YUV数据渲染

发布于 1周前 作者 gougou168 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next YUV数据渲染

介绍

OpenGLES渲染yuv数据。

demo详情链接

https://gitee.com/scenario-samples/yuv-demo

1 回复

更多关于HarmonyOS 鸿蒙Next YUV数据渲染的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS中渲染YUV数据,通常需要利用Canvas类及Bitmap类进行图像处理。以下是针对YUV数据渲染的场景化代码示例:

首先,将YUV数据转换为Bitmap:

// 假设YUV数据已经存储在byte数组yuvData中,且其宽度为width,高度为height
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
YuvImage yuvImage = new YuvImage(yuvData, ImageFormat.NV21, width, height, null);
ByteArrayOutputStream out = new ByteArrayOutputStream();
yuvImage.compressToJpeg(new Rect(0, 0, width, height), 100, out);
byte[] jpegData = out.toByteArray();
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferQualityOverSpeed = true;
bitmap = BitmapFactory.decodeByteArray(jpegData, 0, jpegData.length, options);

然后,在Canvas上绘制Bitmap:

// 假设有一个SurfaceHolder的引用surfaceHolder
Canvas canvas = surfaceHolder.lockCanvas();
if (canvas != null) {
    canvas.drawBitmap(bitmap, 0, 0, null);
    surfaceHolder.unlockCanvasAndPost(canvas);
}

上述代码将YUV数据转换为JPEG格式后,再解码为Bitmap,并在Canvas上进行绘制。确保YUV数据的格式与YuvImage构造函数中的ImageFormat匹配(如NV21)。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部