কম্পিউটার

সি প্রোগ্রাম পিজিএম ফরম্যাটে একটি ছবি লিখতে


PGM হল পোর্টেবল গ্রে ম্যাপ। আমরা যদি PNG, JPEG, বা অন্য যেকোন ইমেজ ফরম্যাটে ইমেজ হিসাবে C তে একটি 2d ​​অ্যারে সঞ্চয় করতে চাই, তাহলে একটি ফাইলে লেখার আগে কিছু নির্দিষ্ট ফরম্যাটে ডেটা এনকোড করার জন্য আমাদের অনেক কাজ করতে হবে।

Netpbm ফরম্যাট একটি সহজ এবং বহনযোগ্য সমাধান দেয়। Netpbm হল গ্রাফিক্স প্রোগ্রামের একটি ওপেন সোর্স প্যাকেজ এবং এটি মূলত লিনাক্স বা ইউনিক্স প্ল্যাটফর্মে ব্যবহৃত হয়। এটি Microsoft Windows সিস্টেমের অধীনেও কাজ করে৷

প্রতিটি ফাইল একটি দুই-বাইট ম্যাজিক নম্বর দিয়ে শুরু হয়। এই ম্যাজিক নম্বরটি ফাইলের ধরন সনাক্ত করতে ব্যবহৃত হয়। প্রকারগুলি হল PBM, PGM, PPM ইত্যাদি। এটি এনকোডিং (ASCII বা বাইনারি) সনাক্ত করে। ম্যাজিক সংখ্যাটি হল একটি মূলধন P এর পরে একটি একক সংখ্যার সংখ্যা৷

ASCII এনকোডিং মানুষের পঠনযোগ্যতা এবং অন্যান্য প্ল্যাটফর্মে সহজে স্থানান্তরের অনুমতি দেয়; বাইনারি ফরম্যাট ফাইলের আকারে বেশি কার্যকর কিন্তু এতে নেটিভ বাইট-অর্ডারের সমস্যা থাকতে পারে।

পিজিএম ফাইল কীভাবে লিখবেন?

  • যাদু নম্বর P2 সেট করুন
  • হোয়াইটস্পেস যোগ করুন (স্পেস, ট্যাব, সিআর, এলএফ)
  • প্রস্থ যোগ করুন, দশমিকে ASCII অক্ষর হিসাবে ফর্ম্যাট করুন
  • হোয়াইটস্পেস যোগ করুন
  • উচ্চতা যোগ করুন, দশমিকে ASCII অক্ষর হিসাবে ফর্ম্যাট করুন
  • হোয়াইটস্পেস যোগ করুন
  • সর্বোচ্চ ধূসর মান রাখুন, আবার ASCII দশমিকে
  • হোয়াইটস্পেস যোগ করুন
  • প্রস্থ x উচ্চতা ধূসর মান, প্রতিটি ASCII দশমিকে (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\n"); // Writing Magic Number to the File
   fprintf(pgmimg, "%d %d\n", w, h); // Writing Width and Height into the
   file
   fprintf(pgmimg, "255\n"); // 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, "\n");
   }
   fclose(pgmimg);
}

PGM চিত্রটি নীচের মত দেখাচ্ছে

আউটপুট

সি প্রোগ্রাম পিজিএম ফরম্যাটে একটি ছবি লিখতে


  1. জাভাস্ক্রিপ্টে একটি অ্যারে বিপরীত করার জন্য একটি প্রোগ্রাম লিখুন?

  2. জাভাস্ক্রিপ্ট প্রোগ্রাম 24 ঘন্টা ফর্ম্যাট 12 ঘন্টা রূপান্তর করতে

  3. পয়েন্টারগুলিতে উদাহরণ প্রদর্শন করে একটি সি প্রোগ্রাম লিখুন

  4. রিভার্স অ্যারে করার জন্য একটি সি প্রোগ্রাম লিখুন