質問するログイン新規登録

質問編集履歴

2

追記

2018/10/13 04:18

投稿

kokawa2003
kokawa2003

スコア217

title CHANGED
File without changes
body CHANGED
@@ -36,4 +36,50 @@
36
36
  書いているときから思っていたがcv::matをそのままjavascriptにもちこむのはやはりNGらしいです。
37
37
 
38
38
  それではどうやってもちこんだらいいのでしょうか?
39
- なにかJavascriptのblobかなにかに変換する方法を知りませんか?
39
+ なにかJavascriptのblobかなにかに変換する方法を知りませんか?
40
+
41
+ その後とりあえず持ちこむことは成功して
42
+ ```C
43
+
44
+ #ifdef EMSCRIPTEN
45
+ #include <emscripten.h>
46
+
47
+ EM_JS(int, showImage, (cv::Mat img), {
48
+
49
+ function ImageToBase64(img, mime_type) {
50
+ // New Canvas
51
+ var canvas = document.createElement('canvas');
52
+ canvas.width = img.width;
53
+ canvas.height = img.height;
54
+ // Draw Image
55
+ var ctx = canvas.getContext('2d');
56
+ ctx.drawImage(img, 0, 0);
57
+ // To Base64
58
+ return canvas.toDataURL(mime_type);
59
+ }
60
+
61
+ var b64 = ImageToBase64(img, "image/jpeg");
62
+ window.open(b64);
63
+ return 0;
64
+ });
65
+
66
+ #endif
67
+
68
+
69
+ void ofApp::saveImage(cv::Mat img){
70
+ #ifdef EMSCRIPTEN
71
+ cout<<"EMSCRIPTEN"<<endl;
72
+ showImage(img);
73
+ #else
74
+ cout<<"LINUX"<<endl;
75
+ #endif
76
+
77
+ }
78
+ ```
79
+ みたいな感じのですが今度はjavascriptでエラーを出してしまいます。
80
+ こんな感じです。
81
+ Uncaught TypeError: Failed to execute ‘drawImage’ on ‘CanvasRenderingContext2D’: The provided value is not of type ‘(CSSImageValue or HTMLImageElement or SVGImageElement or HTMLVideoElement or HTMLCanvasElement or ImageBitmap or OffscreenCanvas)’
82
+ at ImageToBase64 (:6931/OFNewPlayer.js:1)
83
+ at _showImage (:6931/OFNewPlayer.js:1)
84
+
85
+ これからするとやはり型が違うらしい。

1

追記

2018/10/13 04:18

投稿

kokawa2003
kokawa2003

スコア217

title CHANGED
@@ -1,1 +1,1 @@
1
- webassemblyでの画像の表示について
1
+ webassemblyでの画像をCからjavascriptもちこむ方法について
body CHANGED
@@ -1,7 +1,7 @@
1
1
  webassemblyでCでプログラミングしています。
2
2
  Cとjavascriptの変換で苦しんでおります
3
- https://kripken.github.io/emscripten-site/docs/porting/connecting_cpp_and_javascript/Interacting-with-code.html
4
- 以下の関数を作りました。
3
+ [https://kripken.github.io/emscripten-site/docs/porting/connecting_cpp_and_javascript/Interacting-with-code.html](https://kripken.github.io/emscripten-site/docs/porting/connecting_cpp_and_javascript/Interacting-with-code.html)
4
+ を読んで以下の関数を作りました。
5
5
  ```C
6
6
  void showImage(cv::Mat img){
7
7
  #ifdef EMSCRIPTEN