Skip to content

Instantly share code, notes, and snippets.

@kjunichi
Last active August 29, 2015 13:57
Show Gist options
  • Save kjunichi/9826184 to your computer and use it in GitHub Desktop.
Save kjunichi/9826184 to your computer and use it in GitHub Desktop.

Emscriptenで生成されたコードにダイレクトにアクセスするには

run()してるとこをコメントアウト

入力準備

function print(text) {
  // textを煮るなり焼くなり
}

var Module = {
   print: print,
   printErr: print,
      arguments: ['-hoo','bar'],
      files: [
        {
          "name": "input.jpeg",
          "data": sampleImageData
        },
        {
          "name": "input.webm",
          "data": sampleVideoData
        }
      ]
};

toDataURLしたMIMEなデータから生のバイナリ配列を取得するには

var base64 = canvas.toDataURL();
var binData = atob(base64.replace(/^.*,/, ''));
var buffer = new Uint8Array(binData .length);
for (var i = 0; i < binData .length; i++) {
     buffer[i] = binData.charCodeAt(i);
}

実行するには(出力を受け取るには)

var result = run(Module);

var fileElm = document.createElement("div");

var buffers = result.data;
buffers.forEach(function(file) {
   filesElm.appendChild(getDownloadLink(file.data, file.name));
});

function getDownloadLink(fileData, fileName) {
  if(fileName.match(/\.jpeg|\.gif|\.jpg|\.png/)) {
    var blob = new Blob([fileData]);
    var src = window.URL.createObjectURL(blob);
    var img = document.createElement('img');

    img.src = src;
    return img;
  } else {
    var a = document.createElement('a');
    a.download = fileName;
    var blob = new Blob([fileData]);
    var src = window.URL.createObjectURL(blob);
    a.href = src;
    a.textContent = 'Click here to download ' + fileName + "!";
    return a;
  }
}

関連

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment