var data_url = canvas.toDataURL ("image/png");जावास्क्रिप्ट में HTML5 Canvas.todataurl फ़ाइल का आकार कैसे प्राप्त करें?
var img = $ ("# img")। Attr ("src", data_url);
img फ़ाइल आकार केबी में क्या है?
var data_url = canvas.toDataURL ("image/png");जावास्क्रिप्ट में HTML5 Canvas.todataurl फ़ाइल का आकार कैसे प्राप्त करें?
var img = $ ("# img")। Attr ("src", data_url);
img फ़ाइल आकार केबी में क्या है?
आप बाइट में डेटा-यूआरएल के आकार में जानना चाहते हैं आप कर सकते हैं:
var imgFileSize = data_url.length;
लेकिन उस png आकार के वास्तविक आकार में नहीं है। क्योंकि Base64 एन्कोडिंग एक 4/3 भूमि के ऊपर है
var head = 'data:image/png;base64,';
var imgFileSize = Math.round((data_url.length - head.length)*3/4) ;
: आप बहुत सही प्रकार से वास्तविक पीएनजी आकार करने के लिए इस तरह से अनुमान लगा सकता है।
संपादित करें: टिप्पणियों के बाद आकार गणना को सही किया।
क्षमा करें! बेस 64 में 4/3 ओवरहेड है, इसलिए मूल फ़ाइल बेस 64 की तुलना में 3/4 गुना छोटी है। मैंने जवाब सही कर दिया है। –
यदि बेस 64 = 4/3 * मूल, तो मूल = 3/4 * बेस 64 –
+1 आप बिल्कुल सही हैं। और मैं अब गणित नहीं जानता ...: - | यह कितना गन्दा सप्ताह रहा है (हम्म)। – K3N
मैं नहीं मिला पेड्रो के समाधान सही, क्या मैंने किया कैनवास के बाहर एक ब्लॉब बनाने और उसके बाद फ़ाइल आकार पाने
canvas.toBlob(function(blob){
alert(blob.size);
});
canvas.toBlob इस पल में एक काम मसौदा है के लिए किया गया है, लेकिन मैं एक pollyfill
मुझे लगता है कि canvas.mozGetAsFile भी काम कर सकता था, लेकिन मैं
सोचने के लिए इसके बारे में है कि प्रत्येक चार 6 बिट (2^== 64 का प्रतिनिधित्व करता है सबसे अच्छा तरीका परीक्षण नहीं किया, अत बेस)। तो बिट्स की कुल संख्या प्राप्त करने के लिए 6 बार आपके पास वर्णों की मात्रा होती है। फिर बाइट्स की मात्रा प्राप्त करने के लिए बिट्स की कुल संख्या 8 से विभाजित करें, क्योंकि बाइट 8 बिट्स है।
Math.round(base64String.length * 6/8);
कौन सा Math.round(base64String.length * 3/4);
के समान है।
कौन सी फाइल? यहां कोई फ़ाइल नहीं है। –