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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dpzvc-ui",
3
- "version": "1.2.6",
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
- showPhoto(e){
61
- this.$Indicator.snake({text:'上传中'});
62
- this.files = [];
63
- let file = e.target.files;
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
- for (let i = 0; i < file.length; i++) {
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
- EXIF.getData(file[i], function () {
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
- let reader = new FileReader();
77
- reader.readAsDataURL(file[i]);
113
+ // });
114
+
78
115
 
79
- reader.onload = function (e) {
80
- let img = new Image();
81
- img.src = e.target.result;
116
+ // let reader = new FileReader();
117
+ // reader.readAsDataURL(file[i]);
82
118
 
83
- img.onload = function (e) {
119
+ // reader.onload = function (e) {
120
+ // let img = new Image();
121
+ // img.src = e.target.result;
84
122
 
85
- that.create(img, Orientation);
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
- for (var n = start; n < start+length; n++) {
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;