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

C-Programm zum Schreiben von Bildern im PGM-Format

WBOY
WBOYnach vorne
2023-09-16 22:01:01783Durchsuche

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);
    }
  • 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen