здесь переменная img извлекается из кода Open Source Png Generation здесь ..
http://www.xarg.org/2010/03/generate-client-side-png-files-using-javascript/, который является альтернативой canvas.toDataURL (); webOS не поддерживает toDataURL, поэтому мне пришлось использовать эту библиотеку.
здесь я использовал эту библиотеку и манипулировал на моем пиксельном массиве данных изображения холста
EditorAssistant.prototype.getDataURL = function(width,height,data){
var p = new PNGlib(height, width, 256); // construcor takes height, weight and color-depth
var background = p.color(0, 0, 0, 0); // set the background transparent
for (var i = 0, n = data.length; i < n; i += 4) {
var x = i * 10;
var y = Math.sin(i) * Math.sin(i) * 50 + 50;
// use a color triad of Microsofts million dollar color
p.buffer[p.index(Math.floor(x), Math.floor(y))] = p.color(data[i], data[i+1], data[i+2]);
}
return 'data:image/png;base64,'+p.getBase64() ;
}
честно говоря, я новичок в node.js. У меня просто есть хит и пробная версия APProach ...
я хочу сохранить мой манипулированный объект холста в каталог изображений в моем приложении ..
путь здесь существует, и этот код не генерирует никаких ошибок. В противном случае он дает мне успех при обратном вызове, а также возвращает количество записанных байтов, но я не могу найти изображение с именем icon.png в папке images ...
Сгенерированные выше imgdata передаются в этот код в виде данных ..
var fs = IMPORTS.require('fs');
var path = IMPORTS.require('path');
var buff = new Buffer(data,'binary').toString('base64');
path.exists('images/', function(exists ){
if (exists) {
fs.open('images/icon.png', 'w', 666, function( e, id ) {
fs.write( id, buff, null, 'binary', function(err,written){
if(err)
callback({
error: false,
reply: err
});
if(written){
callback({
error: false,
reply: buff.toString()
});
}
fs.close(id, function(){
callback({
error: false,
reply: 'closed'
});
});
});
});
}
else {
callback({
error: true,
reply: 'File did not exist.'
});
}
}
})
спасибо заранее