| @@ 5863-5885 (lines=23) @@ | ||
| 5860 | xhr.send(); |
|
| 5861 | }); |
|
| 5862 | } |
|
| 5863 | function dataUriToBlobSync(uri) { |
|
| 5864 | var data = uri.split(','); |
|
| 5865 | var matches = /data:([^;]+)/.exec(data[0]); |
|
| 5866 | if (!matches) |
|
| 5867 | return Option.none(); |
|
| 5868 | var mimetype = matches[1]; |
|
| 5869 | var base64 = data[1]; |
|
| 5870 | var sliceSize = 1024; |
|
| 5871 | var byteCharacters = Window.atob(base64); |
|
| 5872 | var bytesLength = byteCharacters.length; |
|
| 5873 | var slicesCount = Math.ceil(bytesLength / sliceSize); |
|
| 5874 | var byteArrays = new Array(slicesCount); |
|
| 5875 | for (var sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) { |
|
| 5876 | var begin = sliceIndex * sliceSize; |
|
| 5877 | var end = Math.min(begin + sliceSize, bytesLength); |
|
| 5878 | var bytes = new Array(end - begin); |
|
| 5879 | for (var offset = begin, i = 0; offset < end; ++i, ++offset) { |
|
| 5880 | bytes[i] = byteCharacters[offset].charCodeAt(0); |
|
| 5881 | } |
|
| 5882 | byteArrays[sliceIndex] = Uint8Array(bytes); |
|
| 5883 | } |
|
| 5884 | return Option.some(Blob(byteArrays, { type: mimetype })); |
|
| 5885 | } |
|
| 5886 | function dataUriToBlob(uri) { |
|
| 5887 | return new Promise(function (resolve, reject) { |
|
| 5888 | dataUriToBlobSync(uri).fold(function () { |
|
| @@ 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 () { |
|