मैं कैनवास के toDataUrl()
करने की कोशिश कर रहा हूं, और यह base64
डेटा देता है। मैं इसे png
के रूप में स्टोर करना चाहता हूं। मैं बेस 64 से परिवर्तित बाइनरी डेटा प्राप्त कर सकता हूं, लेकिन मैं इसे नोडजेएस सेवा का उपयोग कर फ़ाइल में लिख नहीं सकता।node.js का उपयोग कर फ़ाइल में बाइनरी डेटा कैसे लिखें?
यदि मैं सीधे फ़ाइल पर बेस 64 डेटा लिखता हूं, तो सभी डेटा लिखे जा सकते हैं, लेकिन यह png
सही नहीं हो सकता है? मैं बाइनरी डेटा को संग्रहीत करने के लिए स्टोर करना चाहता हूं। यह कैसे करना है?
कोड स्निपेट:
var strData = this.drawingCanvas.getContext().canvas.toDataURL();
var data = strData.replace(/^data:image\/\w+;base64,/, "");
var imgData = this.decode(data); // decode(data) is DEFINED BELOW
this.call({filePath:'<path>/image.png', data: imgData},
{method:"writeFile"});`
`utf8decode : function (utftext) {
var string = "";
var i = 0;
var c = c1 = c2 = 0;
while (i < utftext.length) {
c = utftext.charCodeAt(i);
if (c < 128) {
string += String.fromCharCode(c);
i++;
}
else if((c > 191) && (c < 224)) {
c2 = utftext.charCodeAt(i+1);
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
i += 2;
}
else {
c2 = utftext.charCodeAt(i+1);
c3 = utftext.charCodeAt(i+2);
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
i += 3;
}
}
return string;
},`
`_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/=",
decode : function (input) {
var output = "";
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
while (i < input.length) {
enc1 = this._keyStr.indexOf(input.charAt(i++));
enc2 = this._keyStr.indexOf(input.charAt(i++));
enc3 = this._keyStr.indexOf(input.charAt(i++));
enc4 = this._keyStr.indexOf(input.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
output = output + String.fromCharCode(chr1);
if (enc3 != 64) {
output = output + String.fromCharCode(chr2);
}
if (enc4 != 64) {
output = output + String.fromCharCode(chr3);
}
}
output = this.utf8decode(output);
return output;
},`
/**************************************************
wRITEfILEaaSSISTANT.JS
***************************************************/
var WriteFileAssistant = function(){};
WriteFileAssistant.prototype.run = function(future, subscription) {
var fs = IMPORTS.require('fs');
var filePath = this.controller.args.filePath;
var f = subscription.get();
f.result = {reply: data};
var fd = fs.openSync('<path>/image.png', 'a+');
//var data = fs.writeSync(fd, g, null, encoding='utf8');
//this.controller.args.data - Image data (binary)
var buff = new Buffer(this.controller.args.data, 'binary');
//tried also with 'base64'
fs.write(fd, buff, 0, buff.length, 0, function(err,written){
});
var f = subscription.get();
f.result = {reply: data};
क्या आप अभी तक बचत कोड का एक छोटा सा पोस्ट पोस्ट कर सकते हैं ताकि हमारे पास काम करने के लिए कुछ हो? – loganfsmyth
धन्यवाद, मैंने उपरोक्त कोड पोस्ट किया है। – Kantesh
जो आपने पोस्ट किया है वह पठनीय है, लेकिन कृपया कोड स्वरूपण मानकों की समीक्षा करें। आपको 4 रिक्त स्थान के साथ सबकुछ इंडेंट करना होगा, उन्हें '' अंकों के साथ लपेटें नहीं। – loganfsmyth