Maison >développement back-end >C++ >Programme C pour écrire une image au format PGM
PGM est une carte portable en niveaux de gris. Si nous voulons stocker un tableau 2D en C sous forme d'image au format PNG, JPEG ou tout autre format d'image, nous devons faire beaucoup de travail pour encoder les données dans un format spécifié avant d'écrire dans le fichier.
Le format Netpbm offre une solution simple et portable. Netpbm est un package graphique open source, essentiellement utilisé sur les plateformes Linux ou Unix. Il fonctionne également sous les systèmes Microsoft Windows.
Chaque fichier commence par un nombre magique de deux octets. Ce numéro magique est utilisé pour identifier le type de fichier. Les types incluent PBM, PGM, PPM, etc. Il identifie également l'encodage (ASCII ou binaire). Un nombre magique est un P majuscule suivi d'un nombre.
L'encodage ASCII permet une lisibilité humaine et un transfert facile vers d'autres plates-formes ; le format binaire est plus efficace en termes de taille de fichier, mais peut présenter des problèmes d'ordre natif des octets.
Comment écrire un fichier PGM ?
#include <stdio.h> main() { int i, j; int w = 13, h = 13; // This 2D array will be converted into an image The size is 13 x 13 int image[13][13] = { { 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 }, { 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31}, { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47}, { 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63}, { 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79}, { 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95 }, { 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111}, { 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127}, { 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143}, { 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159}, { 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175}, { 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191}, { 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207} }; FILE* pgmimg; pgmimg = fopen("my_pgmimg.pgm", "wb"); //write the file in binary mode fprintf(pgmimg, "P2</p><p>"); // Writing Magic Number to the File fprintf(pgmimg, "%d %d</p><p>", w, h); // Writing Width and Height into the file fprintf(pgmimg, "255</p><p>"); // Writing the maximum gray value int count = 0; for (i = 0; i < h; i++) { for (j = 0; j < w; j++) { fprintf(pgmimg, "%d ", image[i][j]); //Copy gray value from array to file } fprintf(pgmimg, "</p><p>"); } fclose(pgmimg); }
L'image PGM est affichée ci-dessous
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!