質問編集履歴

1

コードにコメントを追加

2020/07/10 21:06

投稿

ff7575
ff7575

スコア123

test CHANGED
File without changes
test CHANGED
@@ -38,8 +38,16 @@
38
38
 
39
39
  //入力は問題ないため、<input>タグは割愛させていただく。
40
40
 
41
+
42
+
43
+ //noResizeImgはちゃんとプレビュー表示される
44
+
41
45
  <img class="previewImage" :src="noResizeImg"/>
42
46
 
47
+
48
+
49
+ //このresizeImgが表示されない
50
+
43
51
  <img class="previewImage" :src="resizeImg"/>
44
52
 
45
53
  </template>
@@ -52,13 +60,17 @@
52
60
 
53
61
  setAndResizeImg(event){
54
62
 
63
+
64
+
55
-
65
+ //① 画像ファイルをfileに入れる
56
-
66
+
57
- const file = (event.target.files || event.dataTransfer)[0];
67
+ const file = event.target.files[0];
58
-
68
+
69
+     
70
+
59
- //noResizeImgはちゃんとプレビュー表示され
71
+      //ちゃんと入っているかを確認するため、リサイズなしで表示
60
-
72
+
61
- this.noResizeImg = window.URL.createObjectURL(file);
73
+ this.noResizeImg = window.URL.createObjectURL(file);
62
74
 
63
75
 
64
76
 
@@ -66,7 +78,9 @@
66
78
 
67
79
  if (file.type.startsWith("image/")){
68
80
 
81
+
82
+
69
-
83
+ //③ imgとreaderをそれぞれ用意する
70
84
 
71
85
  const img = new Image();
72
86
 
@@ -74,50 +88,74 @@
74
88
 
75
89
 
76
90
 
77
- //inputから入れた画像ひとまず、readerの中れる。
91
+ //④ fileを、readerにれる。
78
92
 
79
93
  reader.readAsDataURL(file);
80
94
 
95
+
96
+
97
+ //⑤ リサイズしたfileを読み込み直す処理? → reader.onload
98
+
81
99
  reader.onload = (event) => {
82
100
 
101
+
102
+
103
+ //⑥ img.srcにfileをいれる
104
+
83
105
  img.src = event.target.result;
84
106
 
85
107
  img.onload = () => {
86
108
 
87
109
 
88
110
 
89
- //幅が、マックス幅よりも小さい時、そのまま入れる。
111
+ //⑦-① 幅が、マックス幅よりも小さい時、そのまま入れる。
90
112
 
91
113
  if(img.width < this.maxWidth){
92
114
 
115
+
116
+
93
- //この分岐のときは、ちゃんと<img:src="">にプレビュー表示される
117
+         //この分岐を通ったら、ちゃんと<img:src="resizeImg">に表示される
94
118
 
95
119
  this.resizeImg = img.src;
96
120
 
121
+
122
+
97
-
123
+ }else{
98
-
124
+
99
- }else{//幅が、マックス幅よりも大きい時リサイズする。
125
+            //⑦-② 幅が、マックス幅よりも大きい時リサイズする。
100
-
126
+
127
+
128
+
101
- //この分岐のとき、プレビュー表示されなくなる。
129
+             //////この分岐のとき、プレビュー表示されなくなる。
130
+
131
+
132
+
102
-
133
+ //⑧ リサイズ処理
134
+
135
+
136
+
103
- //したがって、この分岐に問題があと考えている
137
+ //⑧-① キャンバスをつく(Nuxtでは作れているか?)
104
-
105
-
106
138
 
107
139
  const canvas = document.createElement('canvas');
108
140
 
109
141
  const ctx = canvas.getContext('2d');
110
142
 
143
+
144
+
145
+ //⑧-② 必要な変数宣言
146
+
111
147
  let ratio = 0;
112
148
 
113
149
  let width = 0;
114
150
 
115
151
  let height = 0;
116
152
 
153
+
154
+
155
+ //⑧-③ ヨコ長の画像
156
+
117
157
  if(img.width > img.height){
118
158
 
119
- // ヨコ長の画像
120
-
121
159
  ratio = img.height / img.width;
122
160
 
123
161
  width = this.maxWidth;
@@ -126,7 +164,9 @@
126
164
 
127
165
  } else {
128
166
 
167
+
168
+
129
- // タテ長の画像
169
+ //⑧-④ タテ長の画像
130
170
 
131
171
  ratio = img.width / img.height;
132
172
 
@@ -136,21 +176,25 @@
136
176
 
137
177
  }
138
178
 
139
-
179
+ //⑧-⑤ リサイズ後の大きさを、キャンバスの大きさにセット。
140
180
 
141
181
  canvas.width = width;
142
182
 
143
183
  canvas.height = height;
144
184
 
145
- //キャンバスにリサイズ画像を描く
146
-
147
185
 
148
186
 
187
+ //⑧-⑥ キャンバスにリサイズ画像を描く
188
+
189
+
190
+
149
191
           ctx.drawImage(image,0,0,image.width,
150
192
 
151
193
  image.height,0,0,width,height);
152
194
 
195
+   
196
+
153
- //リサイズ画像を入れる
197
+            //リサイズ画像を入れる〜終了〜 これが表示されない
154
198
 
155
199
           this.resizeImg = canvas.toDataURL('image.jpg');
156
200