回答編集履歴

2

コード整形

2022/09/14 00:51

投稿

nobonobo
nobonobo

スコア3367

test CHANGED
@@ -34,7 +34,8 @@
34
34
  let reader = new FileReader();
35
35
  let f = element.files[0];
36
36
  reader.onloadend = function() {
37
- document.write('String Output: ', reader.result); }
37
+ document.write('String Output: ', reader.result);
38
+ }
38
39
  reader.readAsDataURL(f);
39
40
  }
40
41
  </script>

1

別解追記

2022/09/14 00:47

投稿

nobonobo
nobonobo

スコア3367

test CHANGED
@@ -16,3 +16,29 @@
16
16
  ```
17
17
 
18
18
  画像をUInt8Arrayにする方法はJavaScript側で考えてみてください。
19
+
20
+ ## 追記
21
+
22
+ base64変換が遅いというのは小さな単位で処理しているからかもしれません。
23
+ 以下のようにJavascriptに備えられた変換を利用するというのも検討してみてください。
24
+ WASMは小さな単位の繰り返しにおいてJSよりも早い結果が得られますが、
25
+ JS埋め込みの機能利用だとJSのほうが早いことが多いです。
26
+
27
+ ```html
28
+ <html>
29
+ <h2>Example of converting image to string</h2>
30
+ <body>
31
+ <input type="file" onchange="enc(this)" />
32
+ <script>
33
+ function enc(element) {
34
+ let reader = new FileReader();
35
+ let f = element.files[0];
36
+ reader.onloadend = function() {
37
+ document.write('String Output: ', reader.result); }
38
+ reader.readAsDataURL(f);
39
+ }
40
+ </script>
41
+ </body></html>
42
+ ```
43
+
44
+ この場合「data:image/png;base64,iViejk...==」という結果が得られますので、「data:image/png;base64,」という部分を取り除くとBASE64に変換した結果を得ることができます。