目录

图片像素错误导致显示异常

问题现象

对图片进行处理(如编解码、相机流数据处理等),出现显示错误或花屏等现象。

背景知识

在可编程位图中有两种表示方式为RGB和YUV,RGB的色彩空间以三原色来组合表示一个像素点,YUV格式色彩空间以亮度,色调,色饱和度来表示一个像素点。RGB色彩空间更适合图像采集和显示,YUV空间更适合编码和存储。在存储和编码之前,RGB图像要转换为YUV图像,而YUV图像在显示之前一般有必要转换回RGB。

解决方案

使用图片解析软件或手动读取图片数据分析比较。

常见FAQ

Q:编解码的对齐字节是多少(如何获取编码图像跨距/步长)?

A:根据不同的硬件限制,编解码器自动对齐的字节不同,可以使用OH_VideoEncoder_GetInputDescription查询得到AVformat,再用OH_AVFormat_GetIntValue获取OH_MD_KEY_VIDEO_STRIDE的值进行处理。详细处理方式参考视频编码文档中的调用OH_VideoEncoder_PushInputBuffer写入编码图像步骤。

Q:HarmonyOS中PixelMap支持什么像素格式?

A:PixelMap的像素格式参考PixelMapFormat。

总结

渲染图片错误花屏通常由对图片数据的错误处理导致。

现象

像素错误情况

常见原因

处理方式

图片颜色错误

像素点内颜色通道错误

像素中颜色通道顺序错误(如图片像素以BGR的方式储存但以RGB的方式读取渲染)

更换图片像素通道的解析顺序

图片颜色杂乱且像素点清晰可见

每个像素点的数据异常

图片色彩空间/图片像素格式错误(如RGB的色彩空间采用YUV解析/RGB类型的像素格式使用RGBA的像素解析)

以正确的色彩空间和像素格式解析渲染图片

图片撕裂有规则的斜条纹

图片上像素点的个数错误

图片的宽高跨距处理不正确

确认字节对齐大小,添加或删除填充使图片跨距对齐