在 Android 上将 YUV 转换为 RGB,通常可以通过使用 Android 提供的
android.graphics.ImageFormat
和
android.graphics.YuvImage
类来完成。
以下是示例代码,假设您已经拥有一个
byte[]
数组
data
,其中包含 YUV 数据,并且已知图像的宽度和高度(
width
和
height
):
// 将 YUV 数据转换为 RGB
YuvImage yuvImage = new YuvImage(data, ImageFormat.NV21, width, height, null);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
yuvImage.compressToJpeg(new Rect(0, 0, width, height), 100, outputStream);
// 将 JPEG 数据解码为 Bitmap
byte[] jpegData = outputStream.toByteArray();
Bitmap bitmap = BitmapFactory.decodeByteArray(jpegData, 0, jpegData.length);
// 将 Bitmap 转换为 ARGB_8888 格式(32 位 RGBA 格式)
Bitmap argbBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);
在上述代码中,我们使用 YuvImage
类将 YUV 数据转换为 JPEG 格式。然后,我们使用 BitmapFactory
类将 JPEG 数据解码为 Bitmap 对象。最后,我们将 Bitmap 对象转换为 ARGB_8888 格式的 Bitmap 对象,这是 Android 上处理图像的标准格式之一。
需要注意的是,由于不同的 YUV 格式有不同的排列方式和字节顺序,因此上述代码中使用了 ImageFormat.NV21
表示 YUV 格式。如果您的 YUV 数据采用不同的格式,请根据需要进行更改。