Base64 छवियाँ एम्बेड करना


564

विशुद्ध रूप से जिज्ञासा से बाहर, कौन सा ब्राउज़र बेस 64 छवि एम्बेडिंग कार्य करता है? क्या मैं की बात कर रहा हूँ है यह

मुझे लगता है कि यह आमतौर पर ज्यादातर चीजों के लिए एक अच्छा समाधान नहीं है, क्योंकि यह पृष्ठ के आकार को काफी बढ़ाता है - मैं बस उत्सुक हूं।

कुछ उदाहरण:

HTML:

<img alt="Embedded Image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA..." />

सीएसएस:

div.image {
  width:100px;
  height:100px;
  background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA...);
}

3
उदाहरणों के साथ पृष्ठ को क्यों सेट नहीं किया जाता है, हम सभी वास्तविक परीक्षण करेंगे और इसे यहां पर रिपोर्ट करेंगे
Nir Levy

4
64 बिट्स केवल 6 अक्षर 2 ^ 6 लेता है। एन्कोडिंग प्रकार के आधार पर एक पाठ स्ट्रिंग में न्यूनतम प्रति वर्ण 8 बिट्स होगा। आपने कम से कम 25% दक्षता ढीली की .... मेरे त्वरित परीक्षण ने लगभग 30% नुकसान दिखाया।

4
इससे भी महत्वपूर्ण बात यह है कि आप संभवतः अपने सामान को प्रभावी ढंग से कैश करने की क्षमता खो देते हैं।
Hut8

6
@BrianHaak "जबरदस्त" कुछ नहीं कहता है। मैंने पिछले कुछ वर्षों के दौरान ReactJs के साथ व्यक्तिगत रूप से कई बार बेस 64 छवियों का उपयोग किया है और उनमें कोई भी प्रतिपादन मुद्दे नहीं थे। कृपया कुछ माप प्रदान करें।
लुकास लीसिस

1
@LukasLiesis मैंने वाणिज्यिक उद्देश्यों के लिए Google Chrome में माप किए, इसलिए यहां कोई सार्वजनिक रिपोर्ट नहीं है। यह अद्वितीय छवियों को प्रस्तुत करने के लिए ठीक हो सकता है, लेकिन आपको यह विचार करना होगा कि कैशिंग बिल्कुल काम नहीं करता है। React.js में, यह बहुत महत्वपूर्ण है जब यह पुर्न-प्रतिपादन भागों (नेविगेशन परिवर्तनों पर, उदाहरण के लिए) को पूरा करता है।
ब्रायन हाक

जवाबों:


361

अपडेट: 2017-01-10

डेटा URI अब सभी प्रमुख ब्राउज़रों द्वारा समर्थित हैं। IE संस्करण 8 के बाद से भी एम्बेडिंग छवियों का समर्थन करता है।

http://caniuse.com/#feat=datauri


डेटा यूआरआई अब निम्नलिखित वेब ब्राउज़र द्वारा समर्थित हैं:

  • गेको-आधारित, जैसे फ़ायरफ़ॉक्स, सीमोंकी, ज़ेरोबैंक, कैमिनो, फेनेक और के-मेलेऑन
  • कोनकेर, केडीई के केओ दास इनपुट / आउटपुट सिस्टम के माध्यम से
  • ओपेरा (निन्टेंडो डीएसआई या Wii जैसे उपकरण सहित)
  • WebKit- आधारित, जैसे कि Safari (iOS पर), Android का ब्राउज़र, एपिफेनी और मिडोरी (WebKit, Konqueror के KHTML इंजन का व्युत्पन्न है, लेकिन Mac OS X KIO आर्किटेक्चर को साझा नहीं करता है, इसलिए कार्यान्वयन भिन्न हैं), साथ ही साथ Webkit / क्रोमियम-आधारित, जैसे क्रोम
  • ट्राइडेंट
    • इंटरनेट एक्सप्लोरर 8: Microsoft ने सुरक्षा कारणों से कुछ विशिष्ट "गैर-नौगम्य" सामग्री के लिए अपने समर्थन को सीमित कर दिया है, जिसमें यह चिंता भी शामिल है कि जावास्क्रिप्ट जो डेटा यूआरआई में एम्बेडेड है, वह स्क्रिप्ट फ़िल्टर जैसे कि वेब-आधारित ईमेल क्लाइंट द्वारा उपयोग किए जाने वाले लोगों द्वारा व्याख्या योग्य नहीं हो सकता है। संस्करण 8 [3] में डेटा यूआरआई 32 KiB से छोटा होना चाहिए।
    • डेटा यूआरआई केवल निम्नलिखित तत्वों और / या विशेषताओं के लिए समर्थित हैं [4]:
      • ऑब्जेक्ट (केवल चित्र)
      • img
      • इनपुट प्रकार = छवि
      • संपर्क
    • सीएसएस घोषणाएँ जो एक URL स्वीकार करती हैं, जैसे पृष्ठभूमि-छवि, पृष्ठभूमि, सूची-शैली-प्रकार, सूची-शैली और समान।
    • Internet Explorer 9: Internet Explorer 9 में 32KiB सीमा नहीं है और व्यापक तत्वों में इसकी अनुमति नहीं है।
    • TheWorld Browser: एक IE शेल ब्राउज़र जिसमें डेटा यूआरआई योजना के लिए एक अंतर्निहित समर्थन है

http://en.wikipedia.org/wiki/Data_URI_scheme#Web_browser_support


हाय फिलिप, वहाँ IE8 में 32 KiB आकार सीमा के लिए कोई समाधान है? IE7 और IE6 में base64 समर्थित है? यदि नहीं, तो कोई भी वर्कअराउंड (बिना किसी आकार सीमा के)? यदि हाँ, तो किसी भी आकार की सीमा? यदि हाँ, तो कोई वर्कअराउंड?
सेक्सीबीस्ट

इसे देखें, शायद यह मदद करेगा: phpied.com/mhtml-when-you-need-data-uris-in-ie7-and-under

क्या मानक कुछ भी कहते हैं? अच्छे उत्तर अपडेट के लिए निश्चित अपवोट =)।
सिरो सांटिल्ली 27 iro i 法轮功 ''

5
IE8 सीमा - मैंने क्या पाया कि IE8 में 32,768 ( प्रति Microsoft ) की एक एम्बेडेड छवि अधिकतम वर्ण सीमा है और मेरी एम्बेडेड छवि सिर्फ 35,000 से अधिक थी। इसलिए जब background-imageसीएसएस संपत्ति ( url(...embedded image) IE8 में लोड करने का प्रयास किया गया था, क्योंकि वर्ण सीमा पार हो गई थी, जिसमें संपूर्ण classसंपत्ति शामिल नहीं थी। मैंने इसके लिए कोई हल नहीं निकाला, मैं imgएम्बेडेड छवियों के लिए वापस लौट आया जो अधिकतम और मेरी छवियों को उचित रूप से भरी हुई थीं।
id.ot

53

अधिकांश आधुनिक डेस्कटॉप ब्राउज़र जैसे क्रोम, मोज़िला और इंटरनेट एक्सप्लोरर समर्थन डेटा को डेटा URL के रूप में एन्कोड किया गया है। लेकिन कुछ मोबाइल ब्राउज़रों में डेटा URL प्रदर्शित करने में समस्याएं हैं: Android स्टॉक ब्राउज़र और डॉल्फ़िन ब्राउज़र एम्बेडेड JPEG प्रदर्शित नहीं करेंगे ।

मैं आपको ऑनलाइन बेस 64 एनकोडिंग / डिकोडिंग के लिए निम्नलिखित टूल का उपयोग करने की सलाह देता हूं:

डेटा URL के रूप में प्रारूप करने के लिए "डेटा URL के रूप में प्रारूप" विकल्प की जाँच करें।


3
Base64 को एन्कोड करने के लिए आपको ऑनलाइन टूल की आवश्यकता नहीं है। इसके बजाय आप लिनक्स या मैक ओएस एक्स पर बेस 64 कमांड लाइन टूल का उपयोग कर सकते हैं: इको "डेटा: इमेज / जेपीईजी; बेस 64," $ (कैट
फाइल.जेपीजी

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.