我在应用程序中使用 webgl 并将某些内容渲染到屏幕外渲染目标(帧缓冲区),然后执行 readPixels。获取像素数据后,我使用此处提供的 javascript jpeg 编码器将其转换为 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 只将该死的二进制数据写入文件而不试图变得聪明(或愚蠢)。
有人可以帮我吗?谢谢你。