我有一个像素强度的数据数组(例如 unsigned char Pixel_intensity[4] = {0, 255, 255, 0}
),我需要在 C 代码中创建图像Linux(树莓派)。
最简单的方法是什么?
最佳答案
我建议使用 netpbm 格式,因为它非常容易编程。据记录here和 here .
我编写了一个小演示,说明如何将简单的灰度渐变写入下面的 100x256 图像。
#include <stdio.h>
#include <stdlib.h>
int main(){
FILE *imageFile;
int x,y,pixel,height=100,width=256;
imageFile=fopen("image.pgm","wb");
if(imageFile==NULL){
perror("ERROR: Cannot open output file");
exit(EXIT_FAILURE);
}
fprintf(imageFile,"P5\n"); // P5 filetype
fprintf(imageFile,"%d %d\n",width,height); // dimensions
fprintf(imageFile,"255\n"); // Max pixel
/* Now write a greyscale ramp */
for(x=0;x<height;x++){
for(y=0;y<width;y++){
pixel=y;
fputc(pixel,imageFile);
}
}
fclose(imageFile);
}
图像的标题如下所示:
P5
256 100
255
<binary data of pixels>
图像看起来像这样(我已将其制成 JPEG 以便在此处渲染)
获得图像后,您可以使用出色的 ImageMagick
( here ) 工具将图像转换为您喜欢的任何其他内容,例如如果您希望将上述创建的灰度转换为 JPEG,只需使用 ImageMagick
即可,如下所示:
convert image.pgm image.jpg
或者,如果你想要PNG
convert image.pgm image.png
其实你可以直接在网页上使用PGM格式的图片,按照惯例,MIME类型是image/x-portable-graymap
关于c - unsigned char Pixel_intensity[] 到图像; C 代码、Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22364686/