Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C प्रोग्राम इमेज को PGM फॉर्मेट में लिखने के लिए


PGM पोर्टेबल ग्रे मैप है। यदि हम C में 2D ऐरे को PNG, JPEG, या किसी अन्य इमेज फॉर्मेट में इमेज के रूप में स्टोर करना चाहते हैं, तो हमें फाइल में लिखने से पहले डेटा को कुछ निर्दिष्ट फॉर्मेट में एन्कोड करने के लिए बहुत काम करना होगा।

Netpbm फॉर्मेट एक आसान और पोर्टेबल समाधान देता है। Netpbm ग्राफिक्स प्रोग्राम का एक ओपन सोर्स पैकेज है और यह मूल रूप से Linux या Unix प्लेटफॉर्म में उपयोग किया जाता है। यह Microsoft Windows सिस्टम के तहत भी काम करता है।

प्रत्येक फाइल दो-बाइट मैजिक नंबर से शुरू होती है। इस मैजिक नंबर का उपयोग फाइल के प्रकार की पहचान करने के लिए किया जाता है। प्रकार PBM, PGM, PPM आदि हैं। यह एन्कोडिंग (ASCII या बाइनरी) की भी पहचान करता है। मैजिक नंबर एक कैपिटल P होता है जिसके बाद एक सिंगल डिजिट नंबर होता है।

ASCII एन्कोडिंग मानव पठनीयता और अन्य प्लेटफॉर्म पर आसान ट्रांसफर की अनुमति देता है; बाइनरी फॉर्मेट फाइल आकार में अधिक कुशल है लेकिन इसमें नेटिव बाइट-ऑर्डर मुद्दे हो सकते हैं।

PGM फाइलें कैसे लिखें?

  • मैजिक नंबर P2 सेट करें
  • व्हाइटस्पेस जोड़ें (स्पेस, टैब्स, CRs, LFs)
  • चौड़ाई जोड़ें, ASCII कैरेक्टर में डेसीमल के रूप में फॉर्मेटेड
  • व्हाइटस्पेस जोड़ें
  • ऊंचाई जोड़ें, ASCII कैरेक्टर में डेसीमल के रूप में फॉर्मेटेड
  • व्हाइटस्पेस जोड़ें
  • अधिकतम ग्रे वैल्यू डालें, फिर से ASCII डेसीमल में
  • व्हाइटस्पेस जोड़ें
  • चौड़ाई x ऊंचाई ग्रे वैल्यूज, प्रत्येक ASCII डेसीमल में (0 और अधिकतम वैल्यू के बीच रेंज), टॉप से बॉटम तक व्हाइटस्पेस से अलग

उदाहरण कोड

#include <stdio.h>

main() {
    int i, j;
    int w = 13, h = 13;
    // यह 2D ऐरे इमेज में बदला जाएगा। आकार 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"); // बाइनरी मोड में फाइल लिखें
    fprintf(pgmimg, "P2\n"); // फाइल में मैजिक नंबर लिखें
    fprintf(pgmimg, "%d %d\n", w, h); // फाइल में चौड़ाई और ऊंचाई लिखें
    fprintf(pgmimg, "255\n"); // अधिकतम ग्रे वैल्यू लिखें
    int count = 0;
    for (i = 0; i < h; i++) {
        for (j = 0; j < w; j++) {
            fprintf(pgmimg, "%d ", image[i][j]); // ऐरे से फाइल में ग्रे वैल्यू कॉपी करें
        }
        fprintf(pgmimg, "\n");
    }
    fclose(pgmimg);
}

PGM इमेज नीचे जैसी दिखती है

आउटपुट

C प्रोग्राम इमेज को PGM फॉर्मेट में लिखने के लिए

  1. 24 घंटे फॉर्मेट को 12 घंटे में बदलने के लिए जावास्क्रिप्ट प्रोग्राम 24 घंटे फॉर्मेट को 12 घंटे में बदलने के लिए जावास्क्रिप्ट प्रोग्राम

    जावास्क्रिप्ट में 24 घंटे फॉर्मेट को 12 घंटे में बदलने के लिए निम्नलिखित कोड है: उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <

  1. C प्रोग्राम: पॉइंटर्स पर उदाहरणों का प्रदर्शन C प्रोग्राम: पॉइंटर्स पर उदाहरणों का प्रदर्शन

    पॉइंटर एक वेरिएबल है जो दूसरे वेरिएबल का एड्रेस स्टोर करता है। पॉइंटर्स की विशेषताएं पॉइंटर मेमोरी स्पेस बचाता है। मेमोरी लोकेशन तक सीधी पहुंच के कारण पॉइंटर का एक्जीक्यूशन टाइम तेज होता है। पॉइंटर्स की मदद से मेमोरी को कुशलतापूर्वक एक्सेस किया जाता है, यानी मेमोरी डायनामिकली एलोकेट और डीएलोकेट ह

  1. C प्रोग्राम: सरणी को उलटें (Reverse Array) C प्रोग्राम: सरणी को उलटें (Reverse Array)

    संबंधित आइटम्स का समूह जो एक सामान्य नाम से संग्रहीत होता है, सरणी कहलाता है। सिंटैक्स datatype array_name[size]; आरंभीकरण घोषणा के समय आरंभीकरण: int a[5] = {10, 20, 30, 40, 50}; C में सरणी उलटना हम स्वैपिंग तकनीक का उपयोग करके सरणी को उलट सकते हैं। उदाहरण: यदि P चार एलिमेंट्स की पूर्णांक सरणी ह