PGM ist eine tragbare Graustufenkarte. Wenn wir ein 2D-Array in C als Bild in PNG, JPEG oder einem anderen Bildformat speichern möchten, müssen wir viel Arbeit leisten, um die Daten in einem bestimmten Format zu kodieren, bevor wir sie in die Datei schreiben.
Netpbm-Format bietet eine einfache und portable Lösung. Netpbm ist ein Open-Source-Grafikpaket, das hauptsächlich auf Linux- oder Unix-Plattformen verwendet wird. Es läuft auch unter Microsoft Windows-Systemen.
Jede Datei beginnt mit einer magischen Zwei-Byte-Zahl. Diese magische Zahl wird verwendet, um den Dateityp zu identifizieren. Zu den Typen gehören PBM, PGM, PPM usw. Es identifiziert auch die Kodierung (ASCII oder binär). Eine magische Zahl ist ein großes P, gefolgt von einer Zahl.
Die ASCII-Kodierung ermöglicht eine einfache Lesbarkeit und eine einfache Übertragung auf andere Plattformen. Das Binärformat ist im Hinblick auf die Dateigröße effizienter, weist jedoch möglicherweise Probleme mit der nativen Bytereihenfolge auf.
Wie schreibe ich eine PGM-Datei?
#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); }
Das obige ist der detaillierte Inhalt vonC-Programm zum Schreiben von Bildern im PGM-Format. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!