Я пытаюсь записать данные холста в виде изображения (png) в мой Dropbox. Мне удается получить данные с холста и сохранить файл в dropbox, но файл не является файлом изображения, который он швыряет.Сохранить изображение для удаления с данными с холста
Согласно документации данные изображения должны быть преобразованы в arrayBuffer. Что я делаю, используя функцию, найденную здесь в Stackoverflow, но что-то не работает. Кто-нибудь знает, что я делаю неправильно?
function _str2ab(str) {
var buf = new ArrayBuffer(str.length*2); // 2 bytes for each char
var bufView = new Uint16Array(buf);
for (var i=0, strLen=str.length; i<strLen; i++) {
bufView[i] = str.charCodeAt(i);
}
return buf;
}
function _savePicture() {
//Get data from canvas
var imageSringData = canvas.toDataURL('image/png');
//Convert it to an arraybuffer
var imageData = _str2ab(imageSringData);
client.writeFile('/Public/the_image.png', imageData, function(error, stat) {
if (error) {
console.log('Error: ' + error);
} else {
console.log('File written successfully!');
}
});
Ниже приведена документация по коробке передач. https://github.com/dropbox/dropbox-js/blob/stable/guides/snippets.md
Как в исходном коде, так и в этом коде, похоже, что вы всегда передаете 'imageSringData' в' writeFile', а не версию, которую вы преобразовали. Я думаю, что ваш исходный код может работать, если вы передали вместо него «imageData», но я не ожидал, что ваш «фиксированный» код тоже будет работать. – smarx
Да, ваше право! Спасибо, я это исправил. – arpo