| @@ 498-520 (lines=23) @@ | ||
| 495 | xhr.send(); |
|
| 496 | }); |
|
| 497 | } |
|
| 498 | function dataUriToBlobSync(uri) { |
|
| 499 | var data = uri.split(','); |
|
| 500 | var matches = /data:([^;]+)/.exec(data[0]); |
|
| 501 | if (!matches) |
|
| 502 | return Option.none(); |
|
| 503 | var mimetype = matches[1]; |
|
| 504 | var base64 = data[1]; |
|
| 505 | var sliceSize = 1024; |
|
| 506 | var byteCharacters = Window.atob(base64); |
|
| 507 | var bytesLength = byteCharacters.length; |
|
| 508 | var slicesCount = Math.ceil(bytesLength / sliceSize); |
|
| 509 | var byteArrays = new Array(slicesCount); |
|
| 510 | for (var sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) { |
|
| 511 | var begin = sliceIndex * sliceSize; |
|
| 512 | var end = Math.min(begin + sliceSize, bytesLength); |
|
| 513 | var bytes = new Array(end - begin); |
|
| 514 | for (var offset = begin, i = 0; offset < end; ++i, ++offset) { |
|
| 515 | bytes[i] = byteCharacters[offset].charCodeAt(0); |
|
| 516 | } |
|
| 517 | byteArrays[sliceIndex] = Uint8Array(bytes); |
|
| 518 | } |
|
| 519 | return Option.some(Blob(byteArrays, { type: mimetype })); |
|
| 520 | } |
|
| 521 | function dataUriToBlob(uri) { |
|
| 522 | return new Promise(function (resolve, reject) { |
|
| 523 | dataUriToBlobSync(uri).fold(function () { |
|
| @@ 5846-5868 (lines=23) @@ | ||
| 5843 | xhr.send(); |
|
| 5844 | }); |
|
| 5845 | } |
|
| 5846 | function dataUriToBlobSync(uri) { |
|
| 5847 | var data = uri.split(','); |
|
| 5848 | var matches = /data:([^;]+)/.exec(data[0]); |
|
| 5849 | if (!matches) |
|
| 5850 | return Option.none(); |
|
| 5851 | var mimetype = matches[1]; |
|
| 5852 | var base64 = data[1]; |
|
| 5853 | var sliceSize = 1024; |
|
| 5854 | var byteCharacters = Window.atob(base64); |
|
| 5855 | var bytesLength = byteCharacters.length; |
|
| 5856 | var slicesCount = Math.ceil(bytesLength / sliceSize); |
|
| 5857 | var byteArrays = new Array(slicesCount); |
|
| 5858 | for (var sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) { |
|
| 5859 | var begin = sliceIndex * sliceSize; |
|
| 5860 | var end = Math.min(begin + sliceSize, bytesLength); |
|
| 5861 | var bytes = new Array(end - begin); |
|
| 5862 | for (var offset = begin, i = 0; offset < end; ++i, ++offset) { |
|
| 5863 | bytes[i] = byteCharacters[offset].charCodeAt(0); |
|
| 5864 | } |
|
| 5865 | byteArrays[sliceIndex] = Uint8Array(bytes); |
|
| 5866 | } |
|
| 5867 | return Option.some(Blob(byteArrays, { type: mimetype })); |
|
| 5868 | } |
|
| 5869 | function dataUriToBlob(uri) { |
|
| 5870 | return new Promise(function (resolve, reject) { |
|
| 5871 | dataUriToBlobSync(uri).fold(function () { |
|