保存为yuv格式文件与保存ppm格式文件的C语言demo
时间: 2023-12-20 08:05:57 浏览: 219
这里提供使用C语言保存YUV格式文件和PPM格式文件的简单示例代码:
保存为YUV格式文件的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
int main() {
// 生成一个大小为256x256的随机图像
uint8_t img[256][256];
for (int i = 0; i < 256; i++) {
for (int j = 0; j < 256; j++) {
img[i][j] = rand() % 256;
}
}
// 将图像转换为YUV格式
uint8_t yuv_img[256][256][3];
for (int i = 0; i < 256; i++) {
for (int j = 0; j < 256; j++) {
yuv_img[i][j][0] = img[i][j];
yuv_img[i][j][1] = 128;
yuv_img[i][j][2] = 128;
}
}
// 保存为YUV格式文件
FILE* fp = fopen("output.yuv", "wb");
fwrite(yuv_img, sizeof(uint8_t), 256 * 256 * 3, fp);
fclose(fp);
return 0;
}
```
保存为PPM格式文件的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
int main() {
// 生成一个大小为256x256的随机图像
uint8_t img[256][256][3];
for (int i = 0; i < 256; i++) {
for (int j = 0; j < 256; j++) {
for (int k = 0; k < 3; k++) {
img[i][j][k] = rand() % 256;
}
}
}
// 保存为PPM格式文件
FILE* fp = fopen("output.ppm", "wb");
fprintf(fp, "P6\n256 256\n255\n");
fwrite(img, sizeof(uint8_t), 256 * 256 * 3, fp);
fclose(fp);
return 0;
}
```
这里的YUV格式文件使用的是4:4:4采样格式,即每个像素的亮度、色度分量都有,而PPM格式文件使用的是RGB颜色编码格式。在实际使用中,你需要根据具体的需求选择不同的采样格式和颜色编码格式。
阅读全文