アプリケーションで 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にひどいバイナリデータをファイルに書き込む方法がわかりません。
誰かがこれで私を助けてくれますか? ありがとうございました。