PGM はポータブルなグレースケール マップです。 2D 配列を C で PNG、JPEG、またはその他の画像形式で保存したい場合は、ファイルに書き込む前にデータを指定された形式でエンコードするという多くの作業を行う必要があります。
Netpbm 形式は、シンプルで移植可能なソリューションを提供します。 Netpbm はオープン ソースのグラフィック パッケージであり、基本的に Linux または Unix プラットフォームで使用されます。 Microsoft Windows システムでも動作します。
すべてのファイルは 2 バイトのマジックナンバーで始まります。このマジックナンバーは、ファイルの種類を識別するために使用されます。タイプには、PBM、PGM、PPM などが含まれます。また、エンコーディング (ASCII またはバイナリ) も識別します。マジックナンバーは、大文字の P の後に数字が続くものです。
ASCII エンコードを使用すると、人間が読みやすく、他のプラットフォームに簡単に転送できます。ファイル サイズの点ではバイナリ形式の方が効率的ですが、ネイティブ バイト オーダーの問題が発生する可能性があります。
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); }
以上が画像をPGM形式で書き込むCプログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。