質問編集履歴

4

追記

2020/12/15 06:47

投稿

SKY_001
SKY_001

スコア13

test CHANGED
File without changes
test CHANGED
@@ -1,16 +1,16 @@
1
1
  各ブラウザ(ChromeやSafariなど)でExifのOrientationをみて画像を表示したいです。
2
2
 
3
- readAsDataURLにて画像を表示させるとPCのChromeやIOSのChromeではOrientationをみて正しく表示してくれます。
3
+ リサイズして画像を表示させるとPCのChromeやMacのSafariではOrientationをみて正しく表示してくれます。
4
4
 
5
5
  IOSのSafariではOrientationは無視して表示されます。
6
6
 
7
7
  どのブラウザでも正しい向きで表示させたいのですが可能でしょうか?
8
8
 
9
- リサイズしていとの記載が漏ておりした
9
+ ExifのOrientationを取得してリサイズ画像を回転させるとIOSSafariでは正しく表示さ、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:300px" id="show" /></div>
21
+ <div><img style="width:640px" id="show" /></div>
22
22
 
23
23
  <script>
24
24
 

3

追記

2020/12/15 06:46

投稿

SKY_001
SKY_001

スコア13

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

追記

2020/12/15 05:13

投稿

SKY_001
SKY_001

スコア13

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

誤字

2020/12/15 04:55

投稿

SKY_001
SKY_001

スコア13

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- 各ブラウザ(ChromeやSafariなどでExifのOrientationをみて画像を表示したいです。
1
+ 各ブラウザ(ChromeやSafariなどでExifのOrientationをみて画像を表示したいです。
2
2
 
3
3
  readAsDataURLにて画像を表示させるとPCのChromeやIOSのChromeではOrientationをみて正しく表示してくれます。
4
4