ホームページ  >  記事  >  バックエンド開発  >  画像をPGM形式で書き込むCプログラム

画像をPGM形式で書き込むCプログラム

WBOY
WBOY転載
2023-09-16 22:01:01799ブラウズ

PGM はポータブルなグレースケール マップです。 2D 配列を C で PNG、JPEG、またはその他の画像形式で保存したい場合は、ファイルに書き込む前にデータを指定された形式でエンコードするという多くの作業を行う必要があります。

Netpbm 形式は、シンプルで移植可能なソリューションを提供します。 Netpbm はオープン ソースのグラフィック パッケージであり、基本的に Linux または Unix プラットフォームで使用されます。 Microsoft Windows システムでも動作します。

すべてのファイルは 2 バイトのマジックナンバーで始まります。このマジックナンバーは、ファイルの種類を識別するために使用されます。タイプには、PBM、PGM、PPM などが含まれます。また、エンコーディング (ASCII またはバイナリ) も識別します。マジックナンバーは、大文字の P の後に数字が続くものです。

ASCII エンコードを使用すると、人間が読みやすく、他のプラットフォームに簡単に転送できます。ファイル サイズの点ではバイナリ形式の方が効率的ですが、ネイティブ バイト オーダーの問題が発生する可能性があります。

PGM ファイルを作成するにはどうすればよいですか?

  • マジックナンバー P2 を設定します。
  • スペースを追加します (スペース、タブ、CR、LF)
  • 幅を追加します。形式は 10 進数の ASCII 文字です
  • 空白を追加します
  • 高さを追加します。形式は ASCII 10 進数文字です
  • 空白を追加します
  • 最大グレースケール値を入力します。また、ASCII 10 進形式も使用します
  • #スペースを追加します
  • 幅 x 高さのグレースケール値。各値は ASCII 10 進数 (0 から最大値までの範囲) で、上から下までスペースで区切られます。
サンプルコード

#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イメージを以下に示します

出力

画像をPGM形式で書き込むCプログラム

以上が画像をPGM形式で書き込むCプログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。