ईएमएफ फाइल क्या है?
उन्नत मेटाफ़ाइल फ़ॉर्मेट (EMF) ग्राफ़िकल छवियों को डिवाइस-स्वतंत्र रूप से संग्रहीत करता है। ईएमएफ के मेटाफाइल्स में कालानुक्रमिक क्रम में चर-लंबाई के रिकॉर्ड शामिल होते हैं जो किसी भी आउटपुट डिवाइस पर पार्सिंग के बाद संग्रहीत छवि को प्रस्तुत कर सकते हैं। ये चर-लंबाई रिकॉर्ड संलग्न वस्तुओं की परिभाषा, आरेखण के लिए आदेश, और छवि को सटीक रूप से प्रस्तुत करने के लिए महत्वपूर्ण ग्राफ़िक्स गुण हो सकते हैं। जब कोई डिवाइस अपने स्वयं के ग्राफिक्स वातावरण का उपयोग करके एक EMF मेटाफ़ाइल खोलता है, तो मूल छवि के अनुपात, आयाम, रंग और अन्य ग्राफिक गुण ओपनिंग डिवाइस प्लेटफॉर्म की परवाह किए बिना समान रहते हैं।
संक्षिप्त इतिहास
1990 में, Microsoft ने Microsoft Windows के लिए एक छवि फ़ाइल स्वरूप Windows मेटाफ़ाइल (WMF) डिज़ाइन किया। Windows मेटाफ़ाइलें 16-बिट प्रारूप हैं जिनमें कुछ बिटमैप घटक हो सकते हैं। WMF में वेक्टर ग्राफ़िक्स शामिल हो सकते हैं और इसका उद्देश्य विभिन्न अनुप्रयोगों के बीच पोर्टेबल रखना है। 1993 में, Win32/GDI ने एन्हांस्ड मेटाफ़ाइल (EMF) की घोषणा की, जो उन्नत लचीलेपन और मापनीयता के साथ एक नया संस्करण है। EMF का उपयोग प्रिंटर ड्राइवरों को चलाने के लिए ग्राफिक्स भाषा कमांड के रूप में भी किया जाता है। Microsoft अब Windows-प्रारूप (WMF) पर संवर्धित मेटाफ़ाइल स्वरूप (EMF) की अनुशंसा करता है। जब Windows XP पेश किया गया था, तो एन्हांस्ड मेटाफ़ाइल फ़ॉर्मेट प्लस (EMF+) संस्करण जारी किया गया था। यह नया संस्करण जीडीआई + एपीआई कॉल को क्रमबद्ध करके अपना रास्ता खोजता है इसी तरह जीडीआई को डब्ल्यूएमएफ/ईएमएफ रिकॉर्ड कॉल करता है। EMF का एक gzip संकुचित संस्करण मौजूद है जिसे EMZ के रूप में जाना जाता है।
EMF मेटाफ़ाइल स्वरूप
उन्नत मेटाफ़ाइल-प्रारूप के आवश्यक तत्व निम्नलिखित हैं:
- एक EMR_HEADER (संस्करण, आकार, निर्माण के समय चित्र का रिज़ॉल्यूशन)
- जीडीआई वस्तुओं के लिए एक टेबल
- एक आरक्षित पैलेट (वैकल्पिक)
- सरणी संरचना में व्यवस्थित मेटाफ़ाइल रिकॉर्ड (संपत्ति सेटिंग्स, परिभाषित वस्तुएं, ड्राइंग कमांड)
- EMR_EOF रिकॉर्ड (EMF मेटाफ़ाइल में अंतिम रिकॉर्ड)
ईएमएफ संस्करण
- मूल: मूल संस्करण मूल छवि को बनाए रखने और डिवाइस को स्वतंत्र बनाए रखने के लिए आवश्यक रिकॉर्ड निर्दिष्ट करता है। इसके अलावा ग्राफिक्स ऑब्जेक्ट्स और ड्राइंग के लिए कमांड वाले रिकॉर्ड का समर्थन करता है।
- संस्करण 1: ईएमएफ के दूसरे संस्करण ने पिक्सेल प्रारूप और ओपनजीएल कमांड का उपयोग करने के प्रावधान के लिए रिकॉर्ड जोड़कर लचीलापन और डिवाइस स्वतंत्रता में सुधार किया।
- संस्करण 2: तीसरे संस्करण ने डिवाइस की सतह की दूरी को मापने के लिए मीट्रिक प्रणाली को जोड़कर सटीकता को बढ़ाया, जिससे रिकॉर्ड अधिक स्केलेबल हो गया।
उन्नत मेटाफ़ाइल रिकॉर्ड
मेटाफ़ाइल रिकॉर्ड को सरणी के रूप में व्यवस्थित किया जाता है। इन अभिलेखों में ENHMETARECORD संरचना और लंबाई में परिवर्तनशील है। ENHMETARECORD डेटा को निर्दिष्ट करता है जो उन्नत मेटाफ़ाइल प्रारूप का उपयोग करके चित्र बनाने के लिए GDI फ़ंक्शन को परिभाषित करता है। ENHMETAHEADER संरचना हमेशा इस प्रारूप में पहला रिकॉर्ड होता है। इस ईएमएफ हेडर में निम्नलिखित जानकारी है।
उन्नत मेटाफ़ाइल के प्रत्येक रिकॉर्ड में शुरुआत में EMR (आधार संरचना प्रदान करता है) के दो सदस्य होते हैं। पहला सदस्य GDI फ़ंक्शन को पहचानता है (पैरामीटर रिकॉर्ड में उपयोग किए जाते हैं) जो रिकॉर्ड के प्रकार को निर्धारित करता है और iType के रूप में जाना जाता है। अन्य सदस्य nSize प्रत्येक रिकॉर्ड के आकार को परिभाषित करता है। शेष पैरामीटर (यदि कोई हो) और अतिरिक्त डेटा nSize के ठीक नीचे व्यवस्थित है। शीर्षलेख के तुरंत बाद एक वैकल्पिक पाठ विवरण प्रस्तुत हो सकता है। उस पाठ विवरण में चित्र और लेखक का नाम दर्ज है। पैलेट जिसकी उपस्थिति एक विकल्प है, उन्नत मेटाफ़ाइल निर्माण में उपयोग किए गए रंगों को निर्दिष्ट करता है। GDI फ़ंक्शन को निर्दिष्ट करने के लिए उपयोग किए जाने वाले अन्य रिकॉर्ड जो चित्र निर्माण में आवश्यक हैं।
प्रत्येक मेटाफ़ाइल में कम से कम एक EMF रिकॉर्ड मौजूद होना चाहिए। एक रिकॉर्ड से दूसरे रिकॉर्ड में जाने वाली जानकारी ईएमएफ रिकॉर्ड पर निर्भर है, इसलिए इन रिकॉर्डों को आसन्न रूप से व्यवस्थित किया जाना चाहिए। EOF_record को छोड़कर मेटाफ़ाइल में किसी दिए गए रिकॉर्ड पर, उस विशेष रिकॉर्ड की लंबाई अगले रिकॉर्ड पर जाने के लिए परिभाषित होती है।
उन्नत मेटाफ़ाइल निर्माण
CreateEnhMetaFile फ़ंक्शन का उपयोग उन्नत मेटाफ़ाइल बनाने के लिए किया जाता है। यह फ़ंक्शन तर्क डिस्क/मेमोरी पर चित्र के आयाम और भंडारण के लिए उपयोग किया जाता है। इसके अलावा, इस फ़ंक्शन को उस डिवाइस के आयाम की आवश्यकता होती है जिसमें तस्वीर पहले दिखाई देती है (संदर्भित डिवाइस) और संदर्भ डिवाइस (डीसी) का संदर्भ। इसलिए CreateEnhMetaFile फ़ंक्शन को कॉल करते समय इस डीसी को संभालने के लिए तर्क प्रदान करना चाहिए। फ़ंक्शन का सिंटैक्स इस प्रकार है:
HDC CreateEnhMetaFileExample(
HDC hdc,
LPCSTR lptoFilename,
const OVAL *lprc,
LPCSTR lpDesc
);
एचडीसी: एक संदर्भ डिवाइस को हैंडल करें।
lptoFilename: फ़ाइल नाम के लिए एक संकेतक।
lprc: अंडाकार संरचना के लिए सूचक मिमी में चित्र आयाम निर्दिष्ट करता है।
lpDesc: चित्र के शीर्षक और चित्र बनाने वाले एप्लिकेशन के नाम के लिए एक स्ट्रिंग के लिए सूचक।
उन्नत मेटाफ़ाइल संचालन
निम्नलिखित ऐसे कार्य हैं जिन्हें उन्नत मेटाफ़ाइल के हैंडल का उपयोग करके पूरा किया जा सकता है।
- संग्रहीत चित्र के लिए प्रदर्शित करें और संपादित करें।
- बढ़ी हुई मेटाफ़ाइल प्रतियां तैयार करें।
- एक ईएमएफ हेडर, वैकल्पिक विवरण और उन्नत मेटाफाइल के बाइनरी संस्करण की प्रतिलिपि प्राप्त करें
- पैलेट में रंगों को दोहराएं।
ग्राफिक्स ऑब्जेक्ट्स
ड्रॉइंग और पेंटिंग ऑपरेशंस में, ऑब्जेक्ट क्रिएशन रिकॉर्ड्स द्वारा ग्राफिक्स ऑब्जेक्ट्स बनाए जा सकते हैं और आगे के उपयोग के लिए सहेजे जा सकते हैं। एक EMR_SELECTOBJECT
रिकॉर्ड प्लेबैक डिवाइस संदर्भ का उपयोग करके इन ग्राफ़िक्स ऑब्जेक्ट को पुनः प्राप्त कर सकता है। पेन, पैलेट, ब्रश, कलर स्पेस, फोंट और स्टॉक ऑब्जेक्ट कुछ पुन: प्रयोज्य ऑब्जेक्ट प्रकार हैं।
बाइट ऑर्डरिंग
मेटाफाइल रिकॉर्ड में डेटा को स्टोर करने के लिए लिटिल-एंडियन प्रारूप का उपयोग किया जाता है।
संस्करण
EMF फ़ाइल स्वरूप को दो बार संशोधित किया गया है। परिवर्तित संस्करण मूल, एक्सटेंशन 1 और एक्सटेंशन 2 हैं। विस्तारित संस्करणों में ओपनजीएल रिकॉर्ड के लिए प्रावधान है और आंतरिक पिक्सेल प्रारूप के लिए एक वैकल्पिक डिस्क्रिप्टर है। प्रदर्शित आयामों के लिए मिलीलीटर में मापने की सुविधा जोड़ी जाती है।