PGM ialah Peta Skala Kelabu Mudah Alih. Jika kita ingin menyimpan tatasusunan 2D dalam C sebagai imej dalam PNG, JPEG atau mana-mana format imej lain, kita perlu melakukan banyak kerja untuk mengekod data dalam beberapa format tertentu sebelum menulis ke fail.
Format Netpbm menyediakan penyelesaian yang mudah dan mudah alih. Netpbm ialah pakej grafik sumber terbuka, pada asasnya digunakan pada platform Linux atau Unix. Ia juga berjalan di bawah sistem Microsoft Windows.
Setiap fail bermula dengan nombor ajaib dua bait. Nombor ajaib ini digunakan untuk mengenal pasti jenis fail. Jenis termasuk PBM, PGM, PPM, dll. Ia juga mengenal pasti pengekodan (ASCII atau binari). Nombor ajaib ialah huruf besar P diikuti dengan nombor.
Pengekodan ASCII membolehkan kebolehbacaan manusia dan pemindahan mudah ke platform lain adalah lebih cekap dari segi saiz fail, tetapi mungkin mempunyai masalah pesanan bait asli.
Bagaimana cara menulis fail 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); }
Imej PGM ditunjukkan di bawah
Atas ialah kandungan terperinci Program C untuk menulis imej dalam format PGM. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!