dpzvc-ui 1.2.6 → 1.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dpzvc.esm.js +591 -1155
- package/dist/dpzvc.esm.js.map +1 -1
- package/dist/dpzvc.esm.min.js +1 -1
- package/dist/dpzvc.esm.min.js.map +1 -1
- package/dist/dpzvc.js +522 -1105
- package/dist/dpzvc.js.map +1 -1
- package/dist/dpzvc.min.js +1 -1
- package/dist/dpzvc.min.js.map +1 -1
- package/dist-prod/573.d34afb948745a30ef054.js +3 -0
- package/dist-prod/573.d34afb948745a30ef054.js.LICENSE.txt +7 -0
- package/dist-prod/573.d34afb948745a30ef054.js.map +1 -0
- package/dist-prod/index.html +1 -1
- package/dist-prod/main.5ea7bcd95498f23800fb.js +2 -0
- package/dist-prod/main.5ea7bcd95498f23800fb.js.map +1 -0
- package/package.json +3 -3
- package/src/components/upload/upload.vue +65 -25
- package/src/lib/exif-js.js +235 -0
- package/src/lib/exif.js +2 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dpzvc-ui",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.7",
|
|
4
4
|
"description": "Vue组件库",
|
|
5
5
|
"main": "dist/dpzvc.js",
|
|
6
6
|
"module": "dist/dpzvc.esm.js",
|
|
@@ -27,7 +27,8 @@
|
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"china-area-data": "^3.0.0",
|
|
29
29
|
"core-js": "^2.4.1",
|
|
30
|
-
"deepmerge": "^1.3.1"
|
|
30
|
+
"deepmerge": "^1.3.1",
|
|
31
|
+
"exifr": "^7.1.3"
|
|
31
32
|
},
|
|
32
33
|
"devDependencies": {
|
|
33
34
|
"@babel/core": "^7.28.5",
|
|
@@ -50,7 +51,6 @@
|
|
|
50
51
|
"del": "^8.0.1",
|
|
51
52
|
"eslint": "^3.12.2",
|
|
52
53
|
"eslint-plugin-html": "^1.7.0",
|
|
53
|
-
"exif-js": "^2.2.1",
|
|
54
54
|
"file-loader": "^0.8.5",
|
|
55
55
|
"function-bind": "^1.1.0",
|
|
56
56
|
"gh-pages": "^6.3.0",
|
|
@@ -9,8 +9,9 @@
|
|
|
9
9
|
|
|
10
10
|
<script>
|
|
11
11
|
|
|
12
|
-
import EXIF from 'exif-js'
|
|
12
|
+
// import EXIF from '../../lib/exif-js'
|
|
13
13
|
// import MegaPixImage from '../../lib/MegaPixImage'
|
|
14
|
+
import exifr from 'exifr';
|
|
14
15
|
import MegaPixImage from '../../lib/MegaPixImage';
|
|
15
16
|
import { JPEG } from '../../utils/util'
|
|
16
17
|
const prefixCls = 'dpzvc-upload';
|
|
@@ -56,42 +57,81 @@
|
|
|
56
57
|
},
|
|
57
58
|
|
|
58
59
|
methods: {
|
|
60
|
+
async showPhoto(e) {
|
|
61
|
+
this.$Indicator.snake({ text: '上传中' });
|
|
62
|
+
this.files = [];
|
|
63
|
+
const fileList = e.target.files;
|
|
64
|
+
this.fileLength = fileList.length;
|
|
65
|
+
|
|
66
|
+
for (let i = 0; i < fileList.length; i++) {
|
|
67
|
+
const file = fileList[i];
|
|
68
|
+
|
|
69
|
+
try {
|
|
70
|
+
// 读取方向
|
|
71
|
+
const Orientation = await exifr.orientation(file);
|
|
72
|
+
|
|
73
|
+
// 读取图片数据
|
|
74
|
+
const dataURL = await new Promise((resolve, reject) => {
|
|
75
|
+
const reader = new FileReader();
|
|
76
|
+
reader.readAsDataURL(file);
|
|
77
|
+
reader.onload = () => resolve(reader.result);
|
|
78
|
+
reader.onerror = (err) => reject(err);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
const img = new Image();
|
|
82
|
+
img.src = dataURL;
|
|
83
|
+
|
|
84
|
+
await new Promise((resolve) => {
|
|
85
|
+
img.onload = () => {
|
|
86
|
+
// 调用你原来的 create 方法
|
|
87
|
+
this.create(img, Orientation);
|
|
88
|
+
resolve();
|
|
89
|
+
};
|
|
90
|
+
});
|
|
59
91
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
this.fileLength = file.length;
|
|
65
|
-
let that = this;
|
|
66
|
-
let Orientation = null;
|
|
92
|
+
} catch (err) {
|
|
93
|
+
console.error('读取图片或 EXIF 失败', err);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
67
96
|
|
|
68
|
-
|
|
97
|
+
e.target.value = ''; // 清空选择框
|
|
98
|
+
},
|
|
99
|
+
// showPhoto1(e){
|
|
100
|
+
// this.$Indicator.snake({text:'上传中'});
|
|
101
|
+
// this.files = [];
|
|
102
|
+
// let file = e.target.files;
|
|
103
|
+
// this.fileLength = file.length;
|
|
104
|
+
// let that = this;
|
|
105
|
+
// let Orientation = null;
|
|
69
106
|
|
|
70
|
-
|
|
71
|
-
EXIF.getAllTags(this);
|
|
72
|
-
Orientation = EXIF.getTag(this, 'Orientation');
|
|
107
|
+
// for (let i = 0; i < file.length; i++) {
|
|
73
108
|
|
|
74
|
-
|
|
109
|
+
// EXIF.getData(file[i], function () {
|
|
110
|
+
// EXIF.getAllTags(this);
|
|
111
|
+
// Orientation = EXIF.getTag(this, 'Orientation');
|
|
75
112
|
|
|
76
|
-
|
|
77
|
-
|
|
113
|
+
// });
|
|
114
|
+
|
|
78
115
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
img.src = e.target.result;
|
|
116
|
+
// let reader = new FileReader();
|
|
117
|
+
// reader.readAsDataURL(file[i]);
|
|
82
118
|
|
|
83
|
-
|
|
119
|
+
// reader.onload = function (e) {
|
|
120
|
+
// let img = new Image();
|
|
121
|
+
// img.src = e.target.result;
|
|
84
122
|
|
|
85
|
-
|
|
123
|
+
// img.onload = function (e) {
|
|
86
124
|
|
|
125
|
+
// that.create(img, Orientation);
|
|
87
126
|
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
e.target.value = '';
|
|
92
127
|
|
|
128
|
+
// }
|
|
129
|
+
// };
|
|
130
|
+
// }
|
|
131
|
+
// e.target.value = '';
|
|
93
132
|
|
|
94
|
-
|
|
133
|
+
|
|
134
|
+
// },
|
|
95
135
|
create(file, Orientation){
|
|
96
136
|
|
|
97
137
|
let _this = this;
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* JavaScript EXIF Reader
|
|
3
|
+
* https://github.com/exif-js/exif-js
|
|
4
|
+
* 修复版:解决 strict mode 下未声明变量问题
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
(function () {
|
|
8
|
+
var debug = false;
|
|
9
|
+
var root = this;
|
|
10
|
+
|
|
11
|
+
var EXIF = function (obj) {
|
|
12
|
+
if (obj instanceof EXIF) return obj;
|
|
13
|
+
if (!(this instanceof EXIF)) return new EXIF(obj);
|
|
14
|
+
this.EXIFwrapped = obj;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
if (typeof exports !== 'undefined') {
|
|
18
|
+
if (typeof module !== 'undefined' && module.exports) {
|
|
19
|
+
exports = module.exports = EXIF;
|
|
20
|
+
}
|
|
21
|
+
exports.EXIF = EXIF;
|
|
22
|
+
} else {
|
|
23
|
+
root.EXIF = EXIF;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* ========================= TAG MAPS ========================= */
|
|
27
|
+
|
|
28
|
+
var ExifTags = EXIF.Tags = {
|
|
29
|
+
0x9000: "ExifVersion",
|
|
30
|
+
0xA000: "FlashpixVersion",
|
|
31
|
+
0xA001: "ColorSpace",
|
|
32
|
+
0xA002: "PixelXDimension",
|
|
33
|
+
0xA003: "PixelYDimension",
|
|
34
|
+
0x9101: "ComponentsConfiguration",
|
|
35
|
+
0x9102: "CompressedBitsPerPixel",
|
|
36
|
+
0x927C: "MakerNote",
|
|
37
|
+
0x9286: "UserComment",
|
|
38
|
+
0xA004: "RelatedSoundFile",
|
|
39
|
+
0x9003: "DateTimeOriginal",
|
|
40
|
+
0x9004: "DateTimeDigitized",
|
|
41
|
+
0x9290: "SubsecTime",
|
|
42
|
+
0x9291: "SubsecTimeOriginal",
|
|
43
|
+
0x9292: "SubsecTimeDigitized",
|
|
44
|
+
0x829A: "ExposureTime",
|
|
45
|
+
0x829D: "FNumber",
|
|
46
|
+
0x8822: "ExposureProgram",
|
|
47
|
+
0x8824: "SpectralSensitivity",
|
|
48
|
+
0x8827: "ISOSpeedRatings",
|
|
49
|
+
0x8828: "OECF",
|
|
50
|
+
0x9201: "ShutterSpeedValue",
|
|
51
|
+
0x9202: "ApertureValue",
|
|
52
|
+
0x9203: "BrightnessValue",
|
|
53
|
+
0x9204: "ExposureBias",
|
|
54
|
+
0x9205: "MaxApertureValue",
|
|
55
|
+
0x9206: "SubjectDistance",
|
|
56
|
+
0x9207: "MeteringMode",
|
|
57
|
+
0x9208: "LightSource",
|
|
58
|
+
0x9209: "Flash",
|
|
59
|
+
0x920A: "FocalLength",
|
|
60
|
+
0xA300: "FileSource",
|
|
61
|
+
0xA301: "SceneType",
|
|
62
|
+
0xA401: "CustomRendered",
|
|
63
|
+
0xA402: "ExposureMode",
|
|
64
|
+
0xA403: "WhiteBalance",
|
|
65
|
+
0xA406: "SceneCaptureType"
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
var TiffTags = EXIF.TiffTags = {
|
|
69
|
+
0x0100: "ImageWidth",
|
|
70
|
+
0x0101: "ImageHeight",
|
|
71
|
+
0x8769: "ExifIFDPointer",
|
|
72
|
+
0x8825: "GPSInfoIFDPointer",
|
|
73
|
+
0x0112: "Orientation",
|
|
74
|
+
0x0132: "DateTime",
|
|
75
|
+
0x010F: "Make",
|
|
76
|
+
0x0110: "Model",
|
|
77
|
+
0x0131: "Software"
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
var GPSTags = EXIF.GPSTags = {
|
|
81
|
+
0x0000: "GPSVersionID",
|
|
82
|
+
0x0001: "GPSLatitudeRef",
|
|
83
|
+
0x0002: "GPSLatitude",
|
|
84
|
+
0x0003: "GPSLongitudeRef",
|
|
85
|
+
0x0004: "GPSLongitude"
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
/* ========================= CORE ========================= */
|
|
89
|
+
|
|
90
|
+
function getStringFromDB(buffer, start, length) {
|
|
91
|
+
var outstr = "";
|
|
92
|
+
var n;
|
|
93
|
+
for (n = start; n < start + length; n++) {
|
|
94
|
+
outstr += String.fromCharCode(buffer.getUint8(n));
|
|
95
|
+
}
|
|
96
|
+
return outstr;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function readEXIFData(file, start) {
|
|
100
|
+
if (getStringFromDB(file, start, 4) !== "Exif") {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
var bigEnd;
|
|
105
|
+
var tiffOffset = start + 6;
|
|
106
|
+
|
|
107
|
+
if (file.getUint16(tiffOffset) === 0x4949) {
|
|
108
|
+
bigEnd = false;
|
|
109
|
+
} else if (file.getUint16(tiffOffset) === 0x4D4D) {
|
|
110
|
+
bigEnd = true;
|
|
111
|
+
} else {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
var firstIFDOffset = file.getUint32(tiffOffset + 4, !bigEnd);
|
|
116
|
+
var tags = readTags(file, tiffOffset, tiffOffset + firstIFDOffset, TiffTags, bigEnd);
|
|
117
|
+
|
|
118
|
+
if (tags.ExifIFDPointer) {
|
|
119
|
+
var exifData = readTags(
|
|
120
|
+
file,
|
|
121
|
+
tiffOffset,
|
|
122
|
+
tiffOffset + tags.ExifIFDPointer,
|
|
123
|
+
ExifTags,
|
|
124
|
+
bigEnd
|
|
125
|
+
);
|
|
126
|
+
var tag;
|
|
127
|
+
for (tag in exifData) {
|
|
128
|
+
tags[tag] = exifData[tag];
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
return tags;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
function readTags(file, tiffStart, dirStart, strings, bigEnd) {
|
|
136
|
+
var entries = file.getUint16(dirStart, !bigEnd);
|
|
137
|
+
var tags = {};
|
|
138
|
+
var i;
|
|
139
|
+
|
|
140
|
+
for (i = 0; i < entries; i++) {
|
|
141
|
+
var entryOffset = dirStart + i * 12 + 2;
|
|
142
|
+
var tag = strings[file.getUint16(entryOffset, !bigEnd)];
|
|
143
|
+
if (tag) {
|
|
144
|
+
tags[tag] = readTagValue(file, entryOffset, tiffStart, bigEnd);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return tags;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
function readTagValue(file, entryOffset, tiffStart, bigEnd) {
|
|
151
|
+
var type = file.getUint16(entryOffset + 2, !bigEnd);
|
|
152
|
+
var numValues = file.getUint32(entryOffset + 4, !bigEnd);
|
|
153
|
+
var valueOffset = file.getUint32(entryOffset + 8, !bigEnd) + tiffStart;
|
|
154
|
+
var n, vals;
|
|
155
|
+
|
|
156
|
+
if (type === 2) {
|
|
157
|
+
return getStringFromDB(file, valueOffset, numValues - 1);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if (type === 3) {
|
|
161
|
+
if (numValues === 1) {
|
|
162
|
+
return file.getUint16(entryOffset + 8, !bigEnd);
|
|
163
|
+
}
|
|
164
|
+
vals = [];
|
|
165
|
+
for (n = 0; n < numValues; n++) {
|
|
166
|
+
vals[n] = file.getUint16(valueOffset + 2 * n, !bigEnd);
|
|
167
|
+
}
|
|
168
|
+
return vals;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
if (type === 4) {
|
|
172
|
+
if (numValues === 1) {
|
|
173
|
+
return file.getUint32(entryOffset + 8, !bigEnd);
|
|
174
|
+
}
|
|
175
|
+
vals = [];
|
|
176
|
+
for (n = 0; n < numValues; n++) {
|
|
177
|
+
vals[n] = file.getUint32(valueOffset + 4 * n, !bigEnd);
|
|
178
|
+
}
|
|
179
|
+
return vals;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
function findEXIFinJPEG(file) {
|
|
186
|
+
var dataView = new DataView(file);
|
|
187
|
+
if (dataView.getUint8(0) !== 0xFF || dataView.getUint8(1) !== 0xD8) {
|
|
188
|
+
return false;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
var offset = 2;
|
|
192
|
+
var length = file.byteLength;
|
|
193
|
+
|
|
194
|
+
while (offset < length) {
|
|
195
|
+
if (dataView.getUint8(offset) !== 0xFF) {
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
var marker = dataView.getUint8(offset + 1);
|
|
200
|
+
if (marker === 225) {
|
|
201
|
+
return readEXIFData(
|
|
202
|
+
dataView,
|
|
203
|
+
offset + 4,
|
|
204
|
+
dataView.getUint16(offset + 2) - 2
|
|
205
|
+
);
|
|
206
|
+
} else {
|
|
207
|
+
offset += 2 + dataView.getUint16(offset + 2);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return false;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
EXIF.getData = function (img, callback) {
|
|
214
|
+
var reader = new FileReader();
|
|
215
|
+
reader.onload = function (e) {
|
|
216
|
+
img.exifdata = findEXIFinJPEG(e.target.result) || {};
|
|
217
|
+
if (callback) callback.call(img);
|
|
218
|
+
};
|
|
219
|
+
reader.readAsArrayBuffer(img);
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
EXIF.getAllTags = function (img) {
|
|
223
|
+
return img.exifdata || {};
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
EXIF.readFromBinaryFile = function (file) {
|
|
227
|
+
return findEXIFinJPEG(file);
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
if (typeof define === 'function' && define.amd) {
|
|
231
|
+
define('exif-js', [], function () {
|
|
232
|
+
return EXIF;
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
}.call(this));
|
package/src/lib/exif.js
CHANGED
|
@@ -645,7 +645,8 @@
|
|
|
645
645
|
|
|
646
646
|
function getStringFromDB(buffer, start, length) {
|
|
647
647
|
var outstr = "";
|
|
648
|
-
|
|
648
|
+
var n = start;
|
|
649
|
+
for (n; n < start+length; n++) {
|
|
649
650
|
outstr += String.fromCharCode(buffer.getUint8(n));
|
|
650
651
|
}
|
|
651
652
|
return outstr;
|