qt c++将rgb32格式转argb格式
时间: 2023-10-21 21:03:41 浏览: 206
qt整合ffmpeg实现点击按钮调用ffmpeg解码视频转成一张张的图片
5星 · 资源好评率100%
RGB32和ARGB32都是32位像素格式,其中ARGB32中第一位表示Alpha通道,后面的24位表示RGB三个通道。而RGB32中后面的8位表示Alpha通道,前面的24位表示RGB三个通道。所以,将RGB32转换为ARGB32只需要将RGB32的24位数据复制到ARGB32的后24位即可,同时将ARGB32的第一位设置为0xff,即Alpha通道的值为255。
下面是一个示例函数,用于将RGB32数据转换为ARGB32数据:
```cpp
void RGB32_to_ARGB32(unsigned char *src_data, unsigned char *dst_data, int width, int height)
{
unsigned int *src = (unsigned int *)src_data;
unsigned int *dst = (unsigned int *)dst_data;
int x, y;
for (y = 0; y < height; y++) {
for (x = 0; x < width; x++) {
unsigned int src_val = src[y * width + x];
unsigned int dst_val = (src_val & 0x00FFFFFF) | 0xFF000000;
dst[y * width + x] = dst_val;
}
}
}
```
在函数中,首先将src_data和dst_data分别转换为unsigned int类型的指针src和dst。然后遍历每个像素点,将RGB32的24位数据复制到ARGB32的后24位,同时将ARGB32的第一位设置为0xff,最后将结果保存到dst_data数组中。
阅读全文