JPG से Base64 कन्वर्टर

JPG और JPEG इमेज को Base64 में एनकोड करें। मूल फ़ाइल को बाइट-दर-बाइट वैसा ही रखें, या स्ट्रिंग छोटी रखने के लिए उसे कम गुणवत्ता और कम चौड़ाई के साथ दोबारा एनकोड करें।

पूरी तरह आपके ब्राउज़र में चलता है। कुछ भी अपलोड नहीं होता।

उपयोग कैसे करें

  1. कोई .jpg या .jpeg फ़ाइल ड्रॉप एरिया पर खींचकर छोड़ें, चुनने के लिए क्लिक करें, या कोई इमेज पेस्ट करें।
  2. फ़ाइल को ठीक वैसा ही रखने के लिए कन्वर्ज़न बंद रहने दें। उसे छोटा करने के लिए “इसमें बदलें” में JPEG या WebP चुनें और “गुणवत्ता” घटाएँ।
  3. अगर फ़ोटो अपने दिखाए जाने वाले आकार से बड़ी है, तो “अधिकतम चौड़ाई” सेट करें।
  4. जिस आउटपुट की ज़रूरत है उसे कॉपी करें, जैसे पेज के लिए img टैग या किसी API के लिए रॉ Base64, या उसे फ़ाइल के रूप में डाउनलोड करें।

JPEG संक्षेप में

JPEG फ़ोटोग्राफ़ के लिए मानक फ़ॉर्मैट है। यह लॉसी कंप्रेशन का उपयोग करता है, यानी वह बारीकी हटा देता है जिस पर आँख का ध्यान मुश्किल से जाता है, और इसमें पारदर्शिता नहीं होती। फ़ाइलों का एक्सटेंशन .jpg, .jpeg या कभी-कभी .jfif होता है, लेकिन MIME टाइप हमेशा image/jpeg होता है; image/jpg कोई रजिस्टर्ड टाइप नहीं है, भले ही कई ब्राउज़र उसे स्वीकार कर लेते हैं। JPEG data URI data:image/jpeg;base64,/9j/ से शुरू होता है, जो एनकोड किया गया start-of-image मार्कर है।

एनकोड करने से पहले फ़ोटो को छोटा करना

Base64 का सबसे ज़्यादा नुकसान फ़ोटो में होता है: 200 KB की JPEG लगभग 270 KB टेक्स्ट बन जाती है। दो सेटिंग सबसे बड़ा अंतर लाती हैं:

  • अधिकतम चौड़ाई। चौड़ाई आधी करने से पिक्सेल की संख्या एक-चौथाई रह जाती है। 4000 पिक्सेल चौड़ी फ़ोन फ़ोटो की उस आकार में शायद ही कभी ज़रूरत होती है।
  • गुणवत्ता। लगभग 70 से 80% के मान आमतौर पर स्क्रीन पर मूल जैसे ही दिखते हैं और कहीं छोटे होते हैं। बहुत कम मानों पर ब्लॉक जैसे आर्टिफ़ैक्ट दिखने लगते हैं।

मिलती-जुलती गुणवत्ता पर WebP में कन्वर्ट करने से अक्सर और भी छोटा परिणाम मिलता है। हर सेटिंग के लिए दिखाए गए एनकोड किए गए आकार पर नज़र रखें और वह सबसे छोटा परिणाम रखें जो अब भी ठीक दिखता हो।

EXIF मेटाडेटा

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

कन्वर्ट करने पर ब्राउज़र में पिक्सेल दोबारा एनकोड होते हैं, और EXIF डेटा साथ नहीं आता। आउटपुट छोटा होता है और उससे यह पता नहीं चलता कि फ़ोटो कहाँ ली गई थी।

JPEG data URI कहाँ फ़ायदेमंद है

सही उपयोग हैं छोटे धुंधले प्लेसहोल्डर (20 से 40 पिक्सेल चौड़ी इमेज, जो पूरी फ़ोटो के लेज़ी लोड होने तक इनलाइन रहती है), JSON रिस्पॉन्स में थंबनेल और सिंगल-फ़ाइल HTML एक्सपोर्ट। हीरो इमेज और गैलरी अलग फ़ाइलों में होनी चाहिए, जिन्हें ब्राउज़र कैश कर सके।

# Python
import base64
with open('photo.jpg', 'rb') as f:
    uri = 'data:image/jpeg;base64,' + base64.b64encode(f.read()).decode('ascii')

अक्सर पूछे जाने वाले प्रश्न

क्या JPG और JPEG एक ही हैं?

हाँ। छोटा .jpg एक्सटेंशन उन सिस्टम के समय से चला आ रहा है जिनमें एक्सटेंशन के लिए केवल तीन अक्षरों की अनुमति थी। दोनों एक ही फ़ॉर्मैट हैं, जिसका MIME टाइप image/jpeg है।

क्या Base64 एनकोडिंग से JPEG की गुणवत्ता घटती है?

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

क्या JPEG data URI का बैकग्राउंड पारदर्शी हो सकता है?
नहीं, JPEG में अल्फ़ा चैनल नहीं होता। पारदर्शिता के लिए PNG या WebP का उपयोग करें।
क्या Base64 स्ट्रिंग में मेरी फ़ोटो की लोकेशन होती है?

हो सकती है। अगर मूल JPEG के EXIF मेटाडेटा में GPS डेटा है और आप उसे बिना बदले एनकोड करते हैं, तो लोकेशन स्ट्रिंग में मौजूद रहती है। इमेज को कन्वर्ट करने से EXIF मेटाडेटा हट जाता है।