1 | (function (global, factory) {
|
2 | if (typeof define === "function" && define.amd) {
|
3 | define(["exports"], factory);
|
4 | } else if (typeof exports !== "undefined") {
|
5 | factory(exports);
|
6 | } else {
|
7 | var mod = {
|
8 | exports: {}
|
9 | };
|
10 | factory(mod.exports);
|
11 | global.imageReader = mod.exports;
|
12 | }
|
13 | })(this, function (exports) {
|
14 | "use strict";
|
15 |
|
16 | Object.defineProperty(exports, "__esModule", {
|
17 | value: true
|
18 | });
|
19 |
|
20 | exports.default = function (global) {
|
21 | |
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 | function ImageReader(options) {
|
29 |
|
30 | if (!options.files) {
|
31 | return;
|
32 | }
|
33 |
|
34 | this.files = options.files;
|
35 | this.index = 0;
|
36 | this.size = options.size || 0;
|
37 |
|
38 | if (!options.isWebWorker && options.complete) {
|
39 | this.callback = options.complete;
|
40 | }
|
41 |
|
42 | this.readImage(options.files[this.index]);
|
43 | }
|
44 |
|
45 | ImageReader.prototype.readImage = function (file) {
|
46 | var _this = this;
|
47 |
|
48 |
|
49 | var next = this.files && this.index < this.files.length - 1 ? function () {
|
50 | _this.index += 1;
|
51 | _this.readImage(_this.files[_this.index]);
|
52 | } : null;
|
53 |
|
54 | var onReadImageComplete = function onReadImageComplete() {
|
55 | var msg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
56 |
|
57 |
|
58 | if (_this.callback) {
|
59 | _this.callback(msg);
|
60 | } else {
|
61 | postMessage(msg);
|
62 | }
|
63 | next && next();
|
64 | };
|
65 |
|
66 | if (!this.size || file.size <= this.size) {
|
67 | var reader = new FileReader();
|
68 |
|
69 | reader.onload = function (readerEvt) {
|
70 | var dataUrl = readerEvt.target.result;
|
71 | onReadImageComplete({ errorCode: 0, file: file, dataUrl: dataUrl });
|
72 | };
|
73 | reader.onerror = function () {
|
74 |
|
75 | onReadImageComplete({ errorCode: 102 });
|
76 | };
|
77 |
|
78 | reader.readAsDataURL(file);
|
79 | } else {
|
80 | onReadImageComplete({ errorCode: 101 });
|
81 | }
|
82 | };
|
83 |
|
84 | var onmessageCallback = function onmessageCallback(workerEvt) {
|
85 | var imageReader = new ImageReader(workerEvt.data);
|
86 | return imageReader;
|
87 | };
|
88 |
|
89 | if (global) {
|
90 | return function (data) {
|
91 | return onmessageCallback({ data: data });
|
92 | };
|
93 | } else {
|
94 |
|
95 |
|
96 |
|
97 |
|
98 | onmessage = onmessageCallback;
|
99 | }
|
100 | };
|
101 | }); |
\ | No newline at end of file |