RGB565图片转化为RGB888图片 C语言
时间: 2023-10-06 18:11:08 浏览: 192
以下是RGB565图片转化为RGB888图片的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
void RGB565toRGB888(const uint16_t* src, uint8_t* dst, int width, int height) {
int i, j;
uint16_t pixel;
uint8_t r, g, b;
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
pixel = *src++;
r = (pixel >> 11) & 0x1f;
g = (pixel >> 5) & 0x3f;
b = pixel & 0x1f;
r = (r << 3) | (r >> 2);
g = (g << 2) | (g >> 4);
b = (b << 3) | (b >> 2);
*dst++ = r;
*dst++ = g;
*dst++ = b;
}
}
}
int main() {
// 假设原始图片为RGB565格式,大小为240x320
uint16_t* src_image = (uint16_t*)malloc(240 * 320 * sizeof(uint16_t));
// 假设目标图片为RGB888格式,大小为240x320
uint8_t* dst_image = (uint8_t*)malloc(240 * 320 * 3 * sizeof(uint8_t));
// 假设已经将原始图片数据读入src_image中
RGB565toRGB888(src_image, dst_image, 240, 320);
// 现在dst_image中就存储了RGB888格式的图片数据
// ...
free(src_image);
free(dst_image);
return 0;
}
```
以上代码中,RGB565toRGB888函数的输入参数为原始图片数据指针(src)、目标图片数据指针(dst)、图片宽度(width)和图片高度(height)。函数内部通过位运算将RGB565格式的像素值转化为RGB888格式的像素值,然后存储到目标图片数据指针中。最后,我们可以通过读取目标图片数据指针中的数据来获取转化后的RGB888格式图片。
阅读全文