Program C untuk menulis imej dalam format PGM

WBOY
Lepaskan: 2023-09-16 22:01:01
ke hadapan
775 orang telah melayarinya

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?

  • Set nombor sihir P2
  • add ruang (ruang, tab, cr, lf)
  • Add lebar, diformatkan sebagai aksara ascii perpuluhan
  • Add Whitespace
  • add Height, diformat sebagai aksara ascii perpuluhan
  • Add kosong
  • Masukkan nilai skala kelabu maksimum, juga dalam format perpuluhan ASCII
  • Tambah ruang
  • Nilai skala kelabu lebar x tinggi, setiap nilai adalah dalam perpuluhan ASCII (julat antara 0 dan nilai maksimum), dari atas ke bawah dipisahkan oleh ruang.

Contoh kod

#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);
}
Salin selepas log masuk

Imej PGM ditunjukkan di bawah

Output

Program C untuk menulis imej dalam format PGM

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!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!