欢迎大家来到IT世界,在知识的湖畔探索吧!
一、概述
在做视觉和一些界面截图时,需要将保存下来的图片保存到本地,同时还要上传到云平台或内网服务器,上传的方式有很多种,最为常用的有ftp和http这两种。由于篇幅有限,本文主要讲解如何通过http的方式来进行图片上传。
Labview通过HTTP上传图片时,需要将图片转换成Base64编码字符串,再以JSON格式通过POST上传。
下面将着重介绍基于Labview的HTTP客户端的POST方法,以及如何将图片转换成Base64编码。
二、Labview的HTTP客户端POST方法
在labview中,要发送HTTP协议的命令,可以使用HTTP Client VI,该VI可以向Web服务器发送HTTP请求并接收HTTP响应。该VI提供了GET、POST、PUT、DELETE等常见的HTTP方法,以及可以定义HTTP头和内容的选项。如下图所示:
我们要进行数据上报时,需要用到Post方法,首先需要打开句柄,再添加头,再调用POST方法,最后再关闭句柄,POST方法需要指定URL地址和JSON格式缓冲区数据,如下图所示:
三、将图片转换成base64编码字符串
在labview中,如需将图片转换成base64编码,需要使用” base64_fast_encode.vi”,如需将base64编码再转换成图片,则需要使用” base64_fast_decode.vi”。这两个VI都可以在以下链接中下载。
https://forums.ni.com/t5/Example-Programs/Fast-Base64-Encoder-Decoder-using-LabVIEW/ta-p/3503281
除了需要使用” base64_fast_encode.vi”外,还需要将图片转换成通用的图像格式,在labview中默认提供了将LV图像转换成PNGdata的方法。该VI可以换PNG图像转换成普通字符串数据流。然后再用” base64_fast_encode.vi”将普通的字符串数据流转换成base64编码字符串数据流。这样就可以通过POST方法直接上传了。也许有人会问,直接发字符串数据流不可以吗?我觉得如果是在labview程序间发送和接收,是肯定没有问题的,如果发给服务器或第三方语言来接收的话,需要转换成通用的数据编码格式,这样才能支持语言之间数据切换。
而LV图像至PNG数据的方法则是在互连接口的web服务中可以找到,如下图所示:
将图片转换成base64编码字符串后,需要再进行簇捆绑,再转换成JSON格式,通过post方法进行上传。如下图所示:
四、Base64编码字符串反向验证
通过labview将图片转换成base64编码字符串后,如何判断该数据流是否能再还原成图片呢?通过下方链接
https://codebeautify.org/base64-to-image-converter#
网址可以将base64编码字符串转换成image。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/36347.html