回答編集履歴

4

修正

2023/04/25 02:04

投稿

退会済みユーザー
test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  上の回答に書いたことをコーディングしたサンプルを載せておきます。
16
16
 
17
- ```HTML
17
+ ```html
18
18
  <!DOCTYPE html>
19
19
 
20
20
  <html xmlns="http://www.w3.org/1999/xhtml">

3

追記

2023/04/25 02:03

投稿

退会済みユーザー
test CHANGED
@@ -8,3 +8,67 @@
8
8
 
9
9
  (4) image オブジェクトの src 属性に Data url が設定され画像のロードが完了すると onload イベントが発生するのでそのリスナで image オブジェクトの高さと幅を取得
10
10
 
11
+ ---
12
+
13
+ **【追記】**
14
+
15
+ 上の回答に書いたことをコーディングしたサンプルを載せておきます。
16
+
17
+ ```HTML
18
+ <!DOCTYPE html>
19
+
20
+ <html xmlns="http://www.w3.org/1999/xhtml">
21
+ <head runat="server">
22
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
23
+ <title></title>
24
+ <script type="text/javascript">
25
+ window.addEventListener('DOMContentLoaded', () => {
26
+ const inputFile = document.getElementById('img_id');
27
+ const resultDiv = document.getElementById("result");
28
+
29
+ inputFile.addEventListener('change', async () => {
30
+ // 選択された画像の Data url を取得
31
+ let dataUrl = await CreateDataUrl(inputFile.files[0]);
32
+
33
+ // 画像がロードされた img オブジェクトを取得
34
+ let img = await CreateImage(dataUrl);
35
+
36
+ resultDiv.innerText = `Size: ${img.width} x ${img.height}`;
37
+ });
38
+ });
39
+
40
+ // input type="file" から取得できる File オブジェクトを引数
41
+ // に渡す。FileReader オブジェクトを生成して readAsDataURL
42
+ // メソッドで Data url を生成し、resolve コールバックの引数
43
+ // に設定
44
+ const CreateDataUrl = file => {
45
+ return new Promise(resolve => {
46
+ const reader = new FileReader();
47
+ reader.addEventListener('loadend', e => resolve(e.target.result));
48
+ reader.readAsDataURL(file);
49
+ });
50
+ };
51
+
52
+ // 上のメソッドで生成された画像の Data url を引数に渡す。それ
53
+ // を img 要素の src 属性に代入。ロード完了後の img 要素を
54
+ // resolve コールバックの引数に設定
55
+ const CreateImage = dataUrl => {
56
+ return new Promise(resolve => {
57
+ const img = document.getElementById('picture_id');
58
+ img.addEventListener('load', e => resolve(e.target));
59
+ img.src = dataUrl;
60
+ });
61
+ };
62
+ </script>
63
+ </head>
64
+ <body>
65
+ <input type="file" id="img_id" />
66
+ <div id="result"></div>
67
+ <img id="picture_id" />
68
+ </body>
69
+ </html>
70
+ ```
71
+
72
+ 結果は:
73
+
74
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-04-25/509454d5-1b9c-49ed-b127-ad4415c3b3aa.jpeg)

2

訂正

2023/04/24 14:37

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,4 @@
1
- input type="file" でファイルの選択が完了すると change イベントが発生するのでそれにリスナをアタッチし、以下の処置を行うようにはいかがですか?
1
+ input type="file" でファイルの選択が完了すると change イベントが発生するのでそれにリスナをアタッチし、以下の処置を行うようにしてはいかがですか?
2
2
 
3
3
  (1) input type="file" で選択された画像ファイルを FileReader オブジェクトに readAsDataURL メソッドを使って読み込む
4
4
 

1

訂正

2023/04/24 14:35

投稿

退会済みユーザー
test CHANGED
@@ -6,5 +6,5 @@
6
6
 
7
7
  (3) image オブジェクトを作ってその src 属性に Data url 設定
8
8
 
9
- (4) image オブジェクトの src 属性に Data urlが設定され画像のロードが完了すると onload イベントが発生するのでそのリスナで image オブジェクトの高さを取得
9
+ (4) image オブジェクトの src 属性に Data url が設定され画像のロードが完了すると onload イベントが発生するのでそのリスナで image オブジェクトの高さと幅を取得
10
10