質問編集履歴
4
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
各ブラウザ(ChromeやSafariなど)でExifのOrientationをみて画像を表示したいです。
|
2
2
|
|
3
|
-
|
3
|
+
リサイズして画像を表示させるとPCのChromeやMacのSafariではOrientationをみて正しく表示してくれます。
|
4
4
|
|
5
5
|
IOSのSafariではOrientationは無視して表示されます。
|
6
6
|
|
7
7
|
どのブラウザでも正しい向きで表示させたいのですが可能でしょうか?
|
8
8
|
|
9
|
-
リサイズ
|
9
|
+
ExifのOrientationを取得してリサイズ画像を回転させるとIOSのSafariでは正しく表示され、PCのChromeやMacのSafariでは正しく表示できません。
|
10
10
|
|
11
11
|
下記が再現するソースになります。
|
12
12
|
|
13
|
-
再現ソースでは元画像の縦横比は無視して単に640x480リサイズしているのみで
|
13
|
+
再現ソースでは元画像の縦横比は無視して単に640x480リサイズしているのみで回転はさせていません。
|
14
14
|
|
15
15
|
```html
|
16
16
|
|
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
<div><input type="file" id="file" /></div>
|
20
20
|
|
21
|
-
<div><img style="width:
|
21
|
+
<div><img style="width:640px" id="show" /></div>
|
22
22
|
|
23
23
|
<script>
|
24
24
|
|
3
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
readAsDataURLにて画像を表示させるとPCのChromeやIOSのChromeではOrientationをみて正しく表示してくれます。
|
4
4
|
|
5
|
-
SafariではOrientationは無視して表示されます。
|
5
|
+
IOSのSafariではOrientationは無視して表示されます。
|
6
6
|
|
7
7
|
どのブラウザでも正しい向きで表示させたいのですが可能でしょうか?
|
8
8
|
|
2
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -5,3 +5,81 @@
|
|
5
5
|
SafariではOrientationは無視して表示されます。
|
6
6
|
|
7
7
|
どのブラウザでも正しい向きで表示させたいのですが可能でしょうか?
|
8
|
+
|
9
|
+
リサイズしていることの記載が漏れておりました。
|
10
|
+
|
11
|
+
下記が再現するソースになります。
|
12
|
+
|
13
|
+
再現ソースでは元画像の縦横比は無視して単に640x480リサイズしているのみです。
|
14
|
+
|
15
|
+
```html
|
16
|
+
|
17
|
+
<body>
|
18
|
+
|
19
|
+
<div><input type="file" id="file" /></div>
|
20
|
+
|
21
|
+
<div><img style="width:300px" id="show" /></div>
|
22
|
+
|
23
|
+
<script>
|
24
|
+
|
25
|
+
document.getElementById('file').addEventListener('change', (e) => {
|
26
|
+
|
27
|
+
const reader = new FileReader();
|
28
|
+
|
29
|
+
reader.addEventListener('load', (ev) => {
|
30
|
+
|
31
|
+
const img = new Image();
|
32
|
+
|
33
|
+
img.addEventListener('load', () => {
|
34
|
+
|
35
|
+
var blob = null;
|
36
|
+
|
37
|
+
var canvas = document.createElement('canvas');
|
38
|
+
|
39
|
+
canvas.width = 640;
|
40
|
+
|
41
|
+
canvas.height = 480;
|
42
|
+
|
43
|
+
var ctx = canvas.getContext('2d');
|
44
|
+
|
45
|
+
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
|
46
|
+
|
47
|
+
var base64 = canvas.toDataURL(e.target.files[0].type);
|
48
|
+
|
49
|
+
var barr, bin, i, len;
|
50
|
+
|
51
|
+
bin = atob(base64.split('base64,')[1]);
|
52
|
+
|
53
|
+
len = bin.length;
|
54
|
+
|
55
|
+
barr = new Uint8Array(len);
|
56
|
+
|
57
|
+
i = 0;
|
58
|
+
|
59
|
+
while (i < len) {
|
60
|
+
|
61
|
+
barr[i] = bin.charCodeAt(i);
|
62
|
+
|
63
|
+
i++;
|
64
|
+
|
65
|
+
}
|
66
|
+
|
67
|
+
blob = new Blob([barr], {type: e.target.files[0].type});
|
68
|
+
|
69
|
+
document.getElementById('show').src = window.URL.createObjectURL(blob);
|
70
|
+
|
71
|
+
})
|
72
|
+
|
73
|
+
img.src = ev.target.result;
|
74
|
+
|
75
|
+
})
|
76
|
+
|
77
|
+
reader.readAsDataURL(e.target.files[0]);
|
78
|
+
|
79
|
+
})
|
80
|
+
|
81
|
+
</script>
|
82
|
+
|
83
|
+
</body>
|
84
|
+
|
85
|
+
```
|
1
誤字
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
各ブラウザ(ChromeやSafari
|
1
|
+
各ブラウザ(ChromeやSafariなど)でExifのOrientationをみて画像を表示したいです。
|
2
2
|
|
3
3
|
readAsDataURLにて画像を表示させるとPCのChromeやIOSのChromeではOrientationをみて正しく表示してくれます。
|
4
4
|
|