que permite para paginas mejor jpg imprimir imagenes imagen fotos formatos formato cuantos colores calidad c image raster

permite - ¿Cuál es el formato de imagen RGB más simple?



png o jpg para fotos (3)

Estoy trabajando en C en un experimento de física, el experimento de interferencia de Young e hice un programa que imprime para file una gran cantidad de píxeles:

for (i=0; i < width*width; i++) { fwrite(hue(raster_matrix[i]), 1, 3, file); }

Donde hue , cuando se le da un valor [0..255], devuelve un char * con 3 bytes, R, G, B.

Me gustaría poner un encabezado mínimo en mi archivo de imagen para hacer de este archivo en bruto un archivo de imagen válido .

Más conciso: Cambio de:

offset 0000 : height * width : data } my data, 24bit RGB pixels

a

offset 0000 : dword : magic / : /* ?? */ / 0012 : dword : height } Header <--> common image file 0016 : dword : width / : /* ?? */ / 0040 : height * width : data } my data, 24bit RGB pixels

Gracias.


El formato farbfeld recientemente creado es bastante mínimo, aunque no hay mucho software que lo soporte (al menos hasta ahora).


Probablemente desee utilizar el formato PPM, que es lo que está buscando: un encabezado mínimo seguido de RGB sin formato .


TARGA (extensión de nombre de archivo .tga ) puede ser el formato de archivo de imagen binario más ampliamente compatible si no usa compresión y no utiliza ninguna de sus extensiones. Es incluso más simple que los archivos .bmp Windows y es compatible con ImageMagick y muchos programas de pintura. Ha sido mi formato de acceso cuando solo necesito enviar algunos píxeles desde un programa desechable.

Aquí hay un programa de C mínimo para generar una imagen a la salida estándar:

#include <stdio.h> #include <string.h> 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))); }