What is the simplest RGB image format?

后端 未结 4 1284
逝去的感伤
逝去的感伤 2020-12-14 00:26

I am working in C on a physics experiment, Young\'s interference experiment and i made a program who prints to file a huge bunch of pixels :

for         


        
4条回答
  •  情书的邮戳
    2020-12-14 01:09

    TARGA (file name extension .tga) may be the simplest widely supported binary image file format if you don't use compression and don't use any of its extensions. It's even simpler than Windows .bmp files and is supported by ImageMagick and many paint programs. It has been my go-to format when I just need to output some pixels from a throwaway program.

    Here's a minimal C program to generate an image to standard output:

    #include 
    #include 
    
    enum { width = 550, height = 400 };
    
    int main(void) {
      static unsigned char pixels[width * height * 3];
      static unsigned char tga[18];
      unsigned char *p;
      size_t x, y;
    
      p = pixels;
      for (y = 0; y < height; y++) {
        for (x = 0; x < width; x++) {
          *p++ = 255 * ((float)y / height);
          *p++ = 255 * ((float)x / width);
          *p++ = 255 * ((float)y / height);
        }
      }
      tga[2] = 2;
      tga[12] = 255 & width;
      tga[13] = 255 & (width >> 8);
      tga[14] = 255 & height;
      tga[15] = 255 & (height >> 8);
      tga[16] = 24;
      tga[17] = 32;
      return !((1 == fwrite(tga, sizeof(tga), 1, stdout)) &&
               (1 == fwrite(pixels, sizeof(pixels), 1, stdout)));
    }
    

提交回复
热议问题