इस पेज का कोड चालू नहीं हुआ।

index.html को सीधे किसी फ़ोल्डर से खोलने पर ब्राउज़र JavaScript मॉड्यूल रोक देता है, इसलिए कोई फ़ोटो चुनने पर कुछ नहीं होगा। इसके बजाय फ़ोल्डर को http पर सर्व कीजिए:

powershell -ExecutionPolicy Bypass -File serve.ps1

फिर http://localhost:8080/ खोलिए।

ID फ़ोटो मेकर — नियम के मुताबिक पासपोर्ट और वीज़ा फ़ोटो

देश चुनिए। उसी देश का नियम यह हूबहू लागू कर देता है।

भाषा: हिन्दी
कोड देखें
यह टूल फ़ोटो कभी अपलोड नहीं करता। यहाँ कोई सर्वर है ही नहीं।

क्रॉप करना, नापना, बैकग्राउंड पढ़ना और छपाई, सब आपके अपने ब्राउज़र में, आपके अपने हार्डवेयर पर, उसी JPEG एनकोडर से चलते हैं जो उसमें पहले से मौजूद है। इस टूल में किसी भी तरह की कोई नेटवर्क सुविधा है ही नहीं, इसलिए यहाँ से कुछ मँगाया भी नहीं जा सकता और भेजा भी नहीं जा सकता। और मान लीजिए कोई रास्ता होता भी, तो इस पेज के दूसरी तरफ़ ऐसा कोई सर्वर ही नहीं है जिसे आपके चेहरे की तस्वीर भेजी जा सके।

लाइव जाँच: जाँच जारी…

ऑफ़लाइन: जाँच जारी…

हमारी बात पर भरोसा मत कीजिए। DevTools खोलिए, Network टैब पर नज़र रखिए, और कोई पासपोर्ट फ़ोटो बनाइए। एक भी रिक्वेस्ट में न कोई तस्वीर जाती है, न थंबनेल, न फ़ाइल का नाम, न आपकी चुनी फ़ाइल का एक बाइट। या फिर इंटरनेट काट दीजिए और तब भी एक बनाकर देखिए।

1 तस्वीर चुनिए

कोई भी तस्वीर जिसे आपका ब्राउज़र खोल सके। सादी दीवार के सामने, दिन की रोशनी में, करीब डेढ़ मीटर की दूरी से खींची गई फ़ोन की तस्वीर। इनमें से ज़्यादातर नियम इसी के इर्द-गिर्द लिखे गए थे। और वह सीधे आपकी डिस्क से पढ़ी जाती है, कहीं भेजी नहीं जाती।

2 देश और दस्तावेज़ चुनिए

नीचे का हर आँकड़ा प्रकाशित ज़रूरत है, और उसी प्राधिकरण से उतारा गया है जिसका नाम उसके नीचे लिखा है। इस सूची में कुछ भी अंदाज़े से नहीं है, और कुछ भी बाहर से नहीं आता। यह src/specs.js में एक तालिका भर है, जो पेज के साथ ही आ जाती है।

3 चेहरे पर निशान लगाइए, और फ़्रेम जाँचिए

सिर का शिखर, ठुड्डी और दोनों पुतलियाँ। नियम जो कुछ नापता है वह पूरा का पूरा यही चार बिंदु हैं, और क्रॉप वहीं से बनता है जहाँ ये आखिर में रहते हैं — जो बिंदु गलत जगह गिरा हो उसे खींचकर ठीक कीजिए, फिर डिब्बा बिठाइए दबाइए। इन्हें ढूँढ़ना यानी फ़ोटो को ही नापना: पीछे की दीवार के सामने आपके सिर का किनारा, और वे गहरे धब्बे जहाँ आँखें होती हैं। इसमें कोई मॉडल नहीं है और कुछ भी डाउनलोड नहीं होता, और यह फ़ैसला नहीं, शुरुआती जगह है — इसीलिए इसे सुधारना आपके हाथ में है, और इसीलिए नीचे की पंक्ति बताती है कि चारों में से कौन-सा वह नाप नहीं पाई।

कोई तस्वीर चुनिए और क्रॉप का डिब्बा यहाँ आ जाएगा।

4 बैकग्राउंड

क्रॉप के ऊपरी हिस्से की एक पट्टी से और दोनों किनारों से, कंधों के ऊपर से पढ़ा जाता है, यानी फ़्रेम के उन हिस्सों से जिनमें बैकग्राउंड के सिवा कुछ होना ही नहीं चाहिए। यह RGB में नहीं, CIE Lab में नापा जाता है। RGB की चालीस इकाई दूर बैठे दो भूरे रंगों में फ़र्क बता पाना नामुमकिन है, जबकि नीले की चालीस इकाइयाँ एक अलग ही रंग हैं।

5 इसे सहेजिए

Markdown के रूप में देखें

ऐसी पासपोर्ट फ़ोटो कैसे बनाएँ जो लौटाई न जाए

  1. तस्वीर चुनिए। सादी दीवार के सामने, दिन की रोशनी में, करीब डेढ़ मीटर की दूरी से खींची गई फ़ोन की तस्वीर। ब्राउज़र उसे सीधे आपकी डिस्क से पढ़ता है, और इस दौरान कुछ भी कहीं नहीं भेजा जाता।
  2. देश और दस्तावेज़ चुनिए। फिर पैनल उस नियम का छपाई साइज़, सिर-ऊँचाई की पट्टी, आँखों की रेखा, बैकग्राउंड का रंग और अपलोड की सीमाएँ दिखा देता है, और साथ में वह प्राधिकरण भी जिससे हर आँकड़ा आया तथा वह तारीख जब उसे पढ़ा गया। उस सूची में कुछ भी अंदाज़े से नहीं है। आपको जो कुछ भेजा गया हो पर उसमें न हो, वह “कहीं और” के नीचे जाता है।
  3. अपने चेहरे पर चारों बिंदु देख लीजिए। शिखर, ठुड्डी और हर पुतली — नियम जो कुछ नापता है वह पूरा का पूरा यही चार बिंदु हैं। इन्हें फ़ोटो को ही नापकर रखा जाता है, और नीचे की पंक्ति बताती है कि इनमें से क्या नप गया और क्या निकालना पड़ा। जो गलत जगह गिरा हो उसे खींच दीजिए, या मैं खुद रखूँगा पर जाकर चारों अपने हाथ से रखिए। फिर डिब्बा बिठाइए दबाइए, और क्रॉप वहीं आएगा जहाँ वह देश चाहता है।
  4. चारों जाँचें और बैकग्राउंड पढ़ लीजिए। सिर की ऊँचाई, आँखों की रेखा, बीच में होना और झुकाव, चारों डिब्बे की मौजूदा हालत से नापे जाते हैं, और हद से बाहर होने पर हर एक बता देता है कि किस तरफ़ खींचना है। बैकग्राउंड क्रॉप के ऊपरी हिस्से और दोनों किनारों से पढ़ा जाता है और उस रंग से मिलाया जाता है जो नियम माँगता है। असमानता, जिसकी वजह से असल में फ़ोटो लौटाई जाती हैं, रंग से अलग नापी जाती है।
  5. तीनों फ़ाइलें ले जाइए। छपाई वाली, ठीक तय मिलीमीटर पर, और रिज़ॉल्यूशन फ़ाइल के भीतर लिखा हुआ, ताकि दुकान उसे सही साइज़ पर छापे। शीट, जिसमें ⁦4 × 6⁩ में जितनी नकलें समा सकें उतनी हों और बीच की जगहों में काटने के निशान। और अपलोड वाली, उसी पिक्सल साइज़ पर जो पोर्टल माँगता है और उसी KB पट्टी के भीतर जिसे वह दोनों सिरों पर लागू करता है।

विस्तार से

ऐसी पासपोर्ट फ़ोटो कैसे खींचें जो लौटाई न जाए पासपोर्ट फ़ोटो असल में किन बातों पर नापी जाती है - सिर की ऊँचाई, आँखों की रेखा, बैकग्राउंड - कौन-सा देश कौन-से आँकड़े माँगता है, और ऑनलाइन फ़ॉर्म जो पिक्सल तथा KB सीमाएँ लागू करता है उन तक कैसे पहुँचें।

सवाल

क्या मेरी फ़ोटो कहीं अपलोड होती है?

नहीं। तस्वीर को डिकोड करने, क्रॉप करने, नापने और लिखने का काम आपका अपना ब्राउज़र आपके अपने हार्डवेयर पर करता है, उसी JPEG एनकोडर से जो ब्राउज़र में पहले से आता है। इस टूल में किसी भी तरह की कोई नेटवर्क सुविधा है ही नहीं, यानी यह न कभी कुछ मँगाता है, न कभी कुछ भेजता है। और पेज की Content-Security-Policy उन सारे पतों के नाम गिना देती है जिनसे यह संपर्क कर सकता है, जिनमें से एक भी इस साइट का नहीं है। यहाँ इसकी कीमत ज़्यादातर टूलों से ज़्यादा है, क्योंकि फ़ाइल आपके चेहरे की तस्वीर है।

इसमें कौन-कौन से देश शामिल हैं?

अब तक जो विनिर्देश उतारे गए हैं वे ये हैं। खुद ICAO मानक, संयुक्त राज्य अमेरिका (पासपोर्ट और Diversity Visa की प्रविष्टि, जिनके अपलोड नियम अलग हैं), यूनाइटेड किंगडम, शेंगेन वीज़ा, जर्मनी, कनाडा, ऑस्ट्रेलिया, भारत (पासपोर्ट, ⁦35 × 45⁩ mm की छपाई, और SSC/UPSC फ़ॉर्म की फ़ोटो तथा दस्तखत), चीन और जापान। हर प्रविष्टि उस प्राधिकरण का नाम लेती है जिससे वह आई, और वह तारीख भी जब उसे पढ़ा गया। बाकी सब कुछ “कहीं और” के नीचे जाता है, जहाँ हर आँकड़ा आपको खुद टाइप करना है। और चूँकि दुनिया का ज़्यादातर हिस्सा ICAO ज्यामिति के हिसाब से ही जारी करता है, वह प्रविष्टि उसी से शुरू होती है।

चेहरा-मॉडल के बिना यह शिखर, ठुड्डी और आँखें कैसे ढूँढ़ लेता है?

एक बात मानकर, जो किसी आम फ़ेस डिटेक्टर को मानने की छूट नहीं है और इस टूल को है: इनमें से हर नियम एक ही दृश्य माँगता है — एक व्यक्ति, कैमरे के सामने, एक सादी और एक-सी रोशनी वाली दीवार के आगे। तो दीवार का रंग फ़ोटो के किनारे से पढ़ लिया जाता है, जो कुछ उस रंग का नहीं है वही व्यक्ति है, और उसका सबसे ऊपरी सिरा शिखर है, बालों समेत। पुतलियाँ ऐसे धब्बों की सबसे अच्छी जोड़ी के रूप में ढूँढ़ी जाती हैं जो अपने आसपास से गहरे हों, एक ही ऊँचाई पर हों और सिर के बीचोंबीच के दोनों ओर हों — यह तुलना स्थानीय है, इसलिए इसमें कुछ भी इस पर निर्भर नहीं कि चेहरे का रंग क्या है। ठुड्डी अकेली ऐसी है जो इस तरह नहीं मिलती, क्योंकि गर्दन के आगे जबड़ा एक नरम किनारा है जिस पर रंग बदलता ही नहीं; उसे पुतलियों से निकाला जाता है, जो ऊपर के बालों को भी गिन लेने पर सिर की ऊँचाई के बीच से थोड़ा नीचे होती हैं, और फिर बाहरी रेखा से मिलाकर देखा जाता है। यह सब src/detect.js में गणित भर है: न वेट, न रनटाइम, न कुछ मँगाया गया, और हर चेहरे के लिए वही गणित। आखिरी बात ही असल बात है, क्योंकि साथ भेजा गया डिटेक्टर असमान रूप से गलत होता है — कुछ चेहरों पर औरों से ज़्यादा — और जिनकी फ़ोटो पहले से सबसे ज़्यादा लौटाई जाती हैं, वही उसके हाथों सबसे पहले मारे जाते।

यह जो बिंदु रखता है, उन पर कितना भरोसा करूँ?

इतना कि वहाँ से शुरू किया जा सके, इतना नहीं कि देखा ही न जाए। चारों में से हर एक के लिए कोई न कोई फ़ोटो ऐसी है जिस पर वह गलत होता है: छापेदार दीवार या किताबों की अलमारी के सामने सिर की कोई बाहरी रेखा बचती ही नहीं, ऊपर से कटे सिर वाली फ़ोटो में शिखर होता ही नहीं, और चश्मा, घनी फ़्रिंज या बंद आँखें पुतलियों को गलत जगह बिठा सकती हैं। इसीलिए टूल साफ़-साफ़ बताता है कि चारों में से क्या उसने नापा और क्या निकाला, बिना सादे बैकग्राउंड वाली फ़ोटो पर जवाब गढ़ने के बजाय साफ़ मना कर देता है, और हर बिंदु खींचने लायक छोड़ देता है। क्रॉप वहीं से बनता है जहाँ बिंदु आखिर में रहते हैं, वहाँ से कभी नहीं जहाँ से वे शुरू हुए थे। अगर आप चारों खुद रखना चाहें, तो फ़ोटो के ऊपर वाला स्विच मैं खुद रखूँगा कहता है — और किसी भी बिंदु को हाथ से हिलाते ही वह अपने आप उसी पर चला जाता है, क्योंकि उस पल से वे आपके हैं और उन्हें कुछ भी नहीं हिलाएगा।

सिर की ऊँचाई वाला नियम क्या है, और मेरी उसमें बार-बार क्यों अटक जाती है?

इनमें से हर विनिर्देश बताता है कि सिर को फ़्रेम का कितना हिस्सा भरना चाहिए, और वह ठुड्डी के निचले सिरे से लेकर सिर के सबसे ऊपरी हिस्से तक, बाल समेत नापा जाता है। आम तौर पर 70 से 80 प्रतिशत, जो 45 mm की फ़ोटो के लिए 31.5 से 36 mm बैठता है। इसके अटकने की सबसे आम वजह सेल्फ़ी है, क्योंकि हाथ भर की दूरी करीब 60 सेमी होती है, जो चेहरे को विकृत कर देती है और सिर को फ़्रेम में बहुत बड़ा कर देती है। दूसरी आम वजह शिखर है। वह बालों का सबसे ऊपरी सिरा है, बालों की रेखा नहीं, और बालों की रेखा पर निशान लगाने से हर सिर बहुत छोटा निकलता है।

फ़ाइल का कम से कम 20 KB होना क्यों ज़रूरी है, और उसमें भराई कैसे की जा सकती है?

भारत के परीक्षा पोर्टल, चीन का वीज़ा फ़ॉर्म और UK पासपोर्ट का अपलोड, तीनों अधिकतम के साथ न्यूनतम फ़ाइल साइज़ भी बताते हैं, क्योंकि उससे छोटी फ़ाइल आम तौर पर वह थंबनेल होती है जो किसी ने गलती से अपलोड कर दिया। ⁦200 × 230⁩ की तस्वीर 46,000 पिक्सल की होती है, और ब्राउज़र जिस सबसे अच्छी क्वालिटी पर उसे लिख सकता है उस पर भी वह 15 KB पर उतर सकती है। कम कंप्रेस करके उसे बड़ा करने का कोई रास्ता भी नहीं है। इसलिए टूल स्पेसों से भरा एक JPEG कमेंट सेगमेंट जोड़ देता है। वह JPEG मानक का हिस्सा है, हर डिकोडर उसे छोड़ देता है, और तस्वीर बिट-दर-बिट वही तस्वीर रहती है, बस फ़ाइल लंबी हो जाती है। वह भराई फ़ाइल के भीतर, अंग्रेज़ी में, ठीक यही बात लिख भी देती है।

क्या यह बैकग्राउंड जाँचता है, और क्या उसे बदल सकता है?

जाँचता है, बदलेगा नहीं। रंग क्रॉप के ऊपरी हिस्से की एक पट्टी से और दोनों किनारों से, कंधों के ऊपर से पढ़ा जाता है, और नियम के रंग से RGB में नहीं, CIE Lab में मिलाया जाता है। RGB की चालीस इकाई दूर बैठे दो भूरे रंगों में फ़र्क बता पाना नामुमकिन है, जबकि नीले की चालीस इकाइयाँ एक अलग ही रंग हैं। असमानता अलग से नापी जाती है, क्योंकि सफ़ेद दीवार पर पड़ी छाया ही वह चीज़ है जिसकी वजह से असल में फ़ोटो लौटाई जाती हैं, और वह रंग की समस्या है ही नहीं। बैकग्राउंड बदलने का मतलब है किसी व्यक्ति को तस्वीर में से काट निकालना, जो एक सेगमेंटेशन मॉडल है, और खराब मॉडल बाल खा जाता है। दीवार से एक फ़ुट और दूर खड़े हो जाना इनमें से किसी भी फ़िल्टर से ज़्यादा समस्याएँ हल कर देता है।

⁦4 x 6⁩ शीट किस काम की है?

बूथ छह फ़ोटो के कई सौ रुपये लेता है। फ़ोटो की दुकान ⁦6 × 4⁩ चंद रुपयों में छाप देती है, और उनमें से हर एक यह कर देगी। इसलिए टूल आपकी फ़ोटो की उतनी नकलें बिछा देता है जितनी कागज़ में समाएँ, यानी ⁦6 × 4⁩ पर ⁦35 × 45⁩ की आठ, बीच की जगहों में काटने के निशान के साथ, और किसी तस्वीर के ऊपर कुछ भी छपे बिना। कुछ भी बिठाने के लिए छोटा-बड़ा नहीं किया जाता। हर नकल ठीक उसी साइज़ की है जो नियम माँगता है, क्योंकि जो शीट एक और फ़ोटो समाने के लिए उन्हें दो प्रतिशत छोटा कर देती, वह आठ ऐसी फ़ोटो होती जो सब की सब गलत साइज़ की हैं। इसे 100 प्रतिशत पर छापिए, क्योंकि शीट के गलत निकलने की वजह “fit to page” ही होती है।

अगर पिक्सल वही हैं तो DPI से क्या फ़र्क पड़ता है?

फ़र्क इसलिए पड़ता है कि JPEG बता सकती है कि वह किस साइज़ की है, और वह न बताए तो जो भी उसे छापेगा वह अंदाज़ा लगाएगा। रिज़ॉल्यूशन JFIF हेडर में रहता है, और ब्राउज़र का कैनवस वह हेडर units खाने में यह लिखकर बनाता है कि “यह अनुपात है, रिज़ॉल्यूशन नहीं”। यह टूल उन गिनती के बाइटों को दोबारा लिख देता है ताकि फ़ाइल 300 dpi कहे, और यही वह चीज़ है जो ⁦413 × 531⁩ पिक्सल को किसी अनिश्चित साइज़ की तस्वीर के बजाय ⁦35 × 45⁩ mm की फ़ोटो बना देती है। ऐसा करने के लिए कुछ भी डिकोड नहीं होता, और क्वालिटी की कोई कीमत नहीं लगती।

क्या यह दस्तखत वाली फ़ाइल भी बना सकता है?

हाँ। SSC और UPSC फ़ॉर्म उसे ⁦140 × 60⁩ पिक्सल पर और 10 से 20 KB के बीच माँगते हैं, और वह अपने अलग विनिर्देश के रूप में सूची में है। उसके लिए चेहरे वाला ओवरले बंद कर दिया जाता है, क्योंकि दस्तखत की कोई आँखों की रेखा होती ही नहीं, और उसके बजाय यह जाँचा जाता है कि कागज़ हल्के रंग का है, उस पर स्याही है, और क्रॉप में कोई लाइन या पन्ने का किनारा नहीं आ गया है। उस नियम का मुश्किल हिस्सा 10 KB तक पहुँचना है, 20 से नीचे रहना नहीं।

क्या इससे मेरा आवेदन स्वीकार हो ही जाएगा?

नहीं, और कोई भी टूल ईमानदारी से यह नहीं कह सकता। यह इतना करता है कि प्रकाशित आँकड़े हूबहू लागू कर दे और अपनी की गई हर माप आपको दिखा दे। इससे जो चीज़ें फ़ॉर्म अपने आप नापता है, यानी पिक्सल साइज़, फ़ाइल साइज़ और फ़ॉर्मैट, वे सही हो जाती हैं, और जो चीज़ें कोई इंसानी परीक्षक नापता है, यानी सिर की ऊँचाई, आँखों की रेखा और बैकग्राउंड, वे आँकड़ों के साथ आपके सामने आ जाती हैं। नियम बदलते भी रहते हैं, इसलिए यहाँ का हर विनिर्देश बताता है कि वह किस प्राधिकरण से आया और कब पढ़ा गया, ताकि आप किसी तालिका पर भरोसा करने के बजाय उसे अपने सामने रखे फ़ॉर्म से मिला सकें।

क्या यह मुफ़्त है, और क्या इसके लिए खाता बनाना पड़ेगा?

यह मुफ़्त है, और यहाँ न कोई खाता है, न साइन-इन, न ट्रायल, और न आपके चेहरे पर छपा कोई वॉटरमार्क। आप कितनी फ़ोटो बनाते हैं, इस पर भी कोई सीमा नहीं, क्योंकि इनका बिल चुकाने वाला कोई सर्वर है ही नहीं। साइट पर विज्ञापन हैं और खर्च वही उठाते हैं, लेकिन विज्ञापनों को आपकी तस्वीर के बारे में कुछ नहीं दिया जाता।

क्या यह ऑफ़लाइन चलता है?

हाँ। पेज एक बार लोड कर लीजिए, फिर इंटरनेट काट दीजिए, यह चलता रहेगा। नियम-पुस्तिका पेज के साथ आई एक फ़ाइल है, कहीं देखी जाने वाली सूची नहीं। कुछ अपलोड नहीं हो रहा, यह साबित करने का सबसे आसान तरीका भी यही है। जो टूल आपकी तस्वीर क्रॉप होने के लिए कहीं भेजता, वह प्लग निकालते ही रुक जाता।