Heim > Backend-Entwicklung > C++ > C-Programm zum Schreiben von Bildern im PGM-Format

C-Programm zum Schreiben von Bildern im PGM-Format

WBOY
Freigeben: 2023-09-16 22:01:01
nach vorne
808 Leute haben es durchsucht

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?

  • Legen Sie die magische Zahl P2 fest.
  • Leerzeichen hinzufügen (Leerzeichen, Tab, CR, LF).
  • Breite hinzufügen, formatiert als Dezimal-ASCII-Zeichen
  • Geben Sie den maximalen Graustufenwert ein, ebenfalls im ASCII-Dezimalformat.
  • Fügen Sie ein Leerzeichen hinzu.
  • Breite x Höhe des Graustufenwerts. Jeder Wert liegt im ASCII-Dezimalformat vor (Bereich zwischen 0 und dem Maximalwert), von oben nach unten durch Leerzeichen getrennt.
  • Beispielcode
  • #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);
    }
    Nach dem Login kopieren
  • PGM-Bild wird unten angezeigt
  • Ausgabe

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!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage