質問編集履歴

4

追記

2018/04/28 03:45

投稿

agepan
agepan

スコア66

test CHANGED
File without changes
test CHANGED
@@ -129,3 +129,31 @@
129
129
 
130
130
 
131
131
  ```
132
+
133
+
134
+
135
+
136
+
137
+ ### 追記2
138
+
139
+ 先のコードを調整してみました。実際にはこれをfor文で囲み、複数画像を順繰りと舐めて画像サイズを取得したいと考えております。
140
+
141
+ ```JavaScript
142
+
143
+ var image = new Image();
144
+
145
+ image.src = 'image.jpg';
146
+
147
+ image.onload = function (){ // 引数に「image」を入れても同じ
148
+
149
+ var imageWidth = image.naturalWidth;
150
+
151
+ var imageHeight = image.naturalHeight;
152
+
153
+ alert(imageWidth + 'x' + imageHeight);
154
+
155
+ }
156
+
157
+
158
+
159
+ ```

3

追記

2018/04/28 03:45

投稿

agepan
agepan

スコア66

test CHANGED
File without changes
test CHANGED
@@ -52,23 +52,67 @@
52
52
 
53
53
 
54
54
 
55
+ コードを書くにあたって参考にしたページはこちらです。
56
+
55
- ちなみに以下のコードでも試していたのですが、こちらはサイズが0と取得されてしまいます。ただし、2回目に実行させると画像キャッシュが生きているためか、正しい画像サイズを取得できるようになります。
57
+ [https://lab.syncer.jp/Web/JavaScript/Snippet/35/](https://lab.syncer.jp/Web/JavaScript/Snippet/35/)
56
58
 
57
59
 
58
60
 
59
- ```JAVAScript
61
+ ### 追記
60
62
 
61
- var array = ['image01.jpg', 'image02.jpg', 'image03.jpg'];
63
+ 上記コードになる前に書いていたのが下記のコードです。
62
64
 
63
65
 
64
66
 
65
- for (var i = 0; i < array.length; i++) {
67
+ 上記コードでは省いておりましたが、一連の画像を読み込む前に、別の画像(下記 画像A=「image_A.jpg」)を読み込んでおり、その次に上記コードと同じくfor文で画像(画像B=「image_B1〜B3.jpg)を読み込んでいます。
66
68
 
67
69
 
68
70
 
69
- var image = new Image();
71
+ 画像Aは正しく読み込んで画像サイズを取得するのですが、その次の画像Bに関しては画像サイズが0となって正しく取得できません。
70
72
 
73
+
74
+
75
+ 画像Bの方の変数名を変更しても同様で、同じようなコードなのになぜ画像Aが正しく読み込め、画像Bが正しく読めないのか分かりません。画像を何らか先に読み込む必要があるのか?と思い、調べて試してみたのが先に投稿しました上記のコードとなります。
76
+
77
+
78
+
79
+ ```Javascript
80
+
81
+ // 画像Aの読み込み-----------------------------------------------------------------------
82
+
83
+
84
+
85
+ var image = new Image();
86
+
87
+ image.src = 'image_A.jpg';
88
+
89
+ var imageWidth = image.width;
90
+
91
+ var imageHeight = image.height;
92
+
93
+
94
+
95
+ alert(imageWidth + 'x' + imageHeight); // ←「2000x1500」など、正しい画像サイズを取得できる
96
+
97
+
98
+
99
+
100
+
101
+ // 画像B1〜B3の読み込み------------------------------------------------------------------
102
+
103
+
104
+
105
+ var array = ['image_B1.jpg', 'image_B2.jpg', 'image_B3.jpg'];
106
+
107
+
108
+
109
+ for (var j = 0; j < array.length; j++) {
110
+
111
+
112
+
113
+ var image = new Image(); // ←変数名を上と変えて「image2」としても「0」を取得します
114
+
71
- image.src = array[i];
115
+ image.src = array[j];
72
116
 
73
117
  var imageWidth = image.width;
74
118
 
@@ -76,18 +120,12 @@
76
120
 
77
121
 
78
122
 
79
- alert(imageWidth + 'x' + imageHeight);
123
+ alert(imageWidth + 'x' + imageHeight); // ←結果は「0x0」と画像サイズを取得できない
124
+
125
+
80
126
 
81
127
  }
82
128
 
83
129
 
84
130
 
85
131
  ```
86
-
87
-
88
-
89
- ### 追記
90
-
91
- ちなみにコードを書くにあたって参考にしたページはこちらです。
92
-
93
- [https://lab.syncer.jp/Web/JavaScript/Snippet/35/](https://lab.syncer.jp/Web/JavaScript/Snippet/35/)

2

追記

2018/04/28 00:09

投稿

agepan
agepan

スコア66

test CHANGED
File without changes
test CHANGED
@@ -83,3 +83,11 @@
83
83
 
84
84
 
85
85
  ```
86
+
87
+
88
+
89
+ ### 追記
90
+
91
+ ちなみにコードを書くにあたって参考にしたページはこちらです。
92
+
93
+ [https://lab.syncer.jp/Web/JavaScript/Snippet/35/](https://lab.syncer.jp/Web/JavaScript/Snippet/35/)

1

誤字修正

2018/04/27 08:57

投稿

agepan
agepan

スコア66

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- var array = ['image01.jpg', 'image02.jpg', 'image03.jpg']
13
+ var array = ['image01.jpg', 'image02.jpg', 'image03.jpg'];
14
14
 
15
15
 
16
16
 
@@ -58,7 +58,7 @@
58
58
 
59
59
  ```JAVAScript
60
60
 
61
- var array = ['image01.jpg', 'image02.jpg', 'image03.jpg']
61
+ var array = ['image01.jpg', 'image02.jpg', 'image03.jpg'];
62
62
 
63
63
 
64
64