在做一个图像识别的项目, 需要通过浏览器去调用同事写的识别算法, 不用说你们也知道, 肯定是底层的, c或c++的.
浏览器直接调用c肯定不现实, 这个我清楚. 但是绕个弯, node.js是可以调用c, 这样只要通过本地启用nodejs服务或者用nw.js封装web就可以把锅甩给nodejs.
根据我目前掌握的信息来看, node.js可以调用c但也不是随意调用, 需要重写c, 使之成为nodejs的c扩展.类似于这个样子:
Handle<Value> Method(const Arguments& args) { //code here }
这样就比较尴尬了, 我所需要调用的库较为庞大, 重写起来也不是件容易的事, 而且, 我也写不了c啊 (〒︿〒).
我该如何去解决这个问题呢?
或许
一定是我走的方向不对, 不应该拿浏览器调用c, 但如何通过
有什么黑科技能将c转成js
只需要重写c的接口就可以解决
如果你要客户端调用,只能写浏览器插件。IE用ActiveX,火狐用NPAPI。Chrome旧版本可以用NPAPI,45之后版本只能用PPAPI方式。js里可以直接调用。举个例子就是像Flash插件那样,Flash插件是C语言写的吧?如果是服务器端调用,Java的话可以用JNI/JNA。PHP什么的有C扩展模块。
我觉得可以这样,把你同事的C程序部署在服务器,让PHP或其他语言通过命令行调用,就像PHP调用imagemagick和ffmpeg这些命令工具来处理图像和视频那样,处理好了返回即可.
比如说,有个需求要用PHP实现二维码编解码,很多开发者可能首先想到的就是找一些PHP二维码相关的库,其实我觉得完全可以换个思路,直接找找Linux上有什么工具命令能够实现编解码,结果发现编码可以用qrencode,解码可以用zbar-tools,于是直接apt-get安装,然后就是PHP调用这些工具命令实现了二维码图片编解码.
编码: qrencode -o mi.png http://www.mi.com
解码: zbarimg mi.png