C 根本无法理解在阵列中存储像素数据的概念

C 根本无法理解在阵列中存储像素数据的概念,c,pointers,rgb,C,Pointers,Rgb,(已经提交的作业)我交的东西甚至没有编译。这不是为了分数,这纯粹是为了理解(查看截止日期)。我能够完成剩余的作业,但是因为我不知道如何保存与高度/宽度相关的像素数据。我花了5个小时试图理解这一点,但只是没有点击 如何保存单个像素的rgb值。当图像被读入时,我如何告诉程序@height 1,width 1,读取绿色=200,蓝色=…,红色=。。。。?另外,如果有人知道maxVal指的是什么,那会很有帮助 typdef struct { unsigned char green;

(已经提交的作业)我交的东西甚至没有编译。这不是为了分数,这纯粹是为了理解(查看截止日期)。我能够完成剩余的作业,但是因为我不知道如何保存与高度/宽度相关的像素数据。我花了5个小时试图理解这一点,但只是没有点击

如何保存单个像素的rgb值。当图像被读入时,我如何告诉程序@height 1,width 1,读取绿色=200,蓝色=…,红色=。。。。?另外,如果有人知道maxVal指的是什么,那会很有帮助

typdef struct
{
        unsigned char green;
        unsigned char blue;
        unsigned char red;
}pixelD;

typedef struct
{       
        pixelD * pixel;
} Color;



imageData


Image * ReadImage(char *filename)
{
//* items were added by instructor. I dont see how the magicNum array 
     would be useful here 
/* These lines are useful:
 * char magicNum[128];    
 * int width, height, maxval;    
   int imgSize = (width * height * sizeof(pixel)); 
 * fscanf(f_in,  "%s\n%d %d\n%d\n", magicNum, &width, &height, &maxval);
   pixel = malloc(imgSize); 
   fread()????? this is supposedly the key? 
任务:您将开始操作图像 1) 编写一个结构来存储图像

==2.1图像结构== 图像结构需要一个宽度、高度和缓冲区来存储图像数据。As
我们在课堂上讨论过,图像数据是像素数据的2D数组。一个像素包含3个无符号字符:一个为红色,一个为绿色,一个为蓝色。有多种方法

要存储这些数据,并且它们都是正确的,您需要执行以下步骤:

  • 阅读高度和宽度
  • 计算要在其中保存数据的缓冲区的大小
  • 为缓冲区分配空间
  • 读取数据并将其放入缓冲区

  • ReadImage中的注释为您提供了解决此问题的大部分方法。只需将它们按顺序排列并定义变量名。

    图像数据可以以数百种不同的方式存储:这些被称为*文件格式,其名称包括PNG、GIF、JPEG、TIFF、RAW、PNM等。我们存储的是pnmGood--PNM是未压缩且简单的。只需获取文件的前两个字节以验证格式(它们将是“P1,P2…等等),然后遵循该格式的规则。1-3是文本,因此可以使用fgets()读取。4-6是二进制的,因此应该使用fread()。