Я использую webgl в приложении и визуализирую что-то в целевой рендеринге вне экрана (буфер кадра), а затем выполняю readPixels. После получения данных пикселей я конвертирую их в jpeg, используя кодировщик javascript jpeg, доступный здесь:
Я получаю необработанные двоичные данные в формате jpeg, которые хочу записать в локальную файловую систему. Вот код, который я использую для написания:
root.getFile(filename, {create: true}, function(fileEntry)
{
fileEntry.createWriter(function(writer)
{
writer.onwriteend = function(e)
{
System.debug("Write done");
};
writer.onerror = function(e)
{
System.error(e);
}
var data = new Blob(jpegData, { type: "image/jpeg" });
writer.write(data);
jpegData = null;
pixels = null;
uoozo.core.write[filename] = false;
});
},
function(e)
{
System.error(e);
});
Однако я получаю странные результаты. jpegData в порядке, когда я помещаю его в элемент изображения, однако, когда я создаю blob, например. jpegData имеет размер 3200 байт, но размер создаваемого Blob-объекта всегда составляет 4818 байт, и FileWriter также возвращает ту же позицию после операции записи. Созданный jpeg явно неправильный и не открывается. Я не понимаю, как я могу заставить FileWriter просто записывать чертовы двоичные данные в файл, не пытаясь быть умным (или глупым).
Может ли кто-нибудь помочь мне в этом? Спасибо.