当前位置: 首页 > news >正文

企业网站建设基本流程seo网站seo

企业网站建设基本流程,seo网站seo,建网站 就能开店,移动web网站开发0.什么是WebSocket,由于普通的请求是间断式发送的,如果要同一时间发生大量的请求,必然导致响应速度慢(因为根据tcp协议要经过三层握手,如果不持续发送,就会导致n多次握手,关闭连接,打开连接) 1.业务需求: 由于我需要使用java来处理视频的问题,视频其实就是图片,相当于每张图片…

0.什么是WebSocket,由于普通的请求是间断式发送的,如果要同一时间发生大量的请求,必然导致响应速度慢(因为根据tcp协议要经过三层握手,如果不持续发送,就会导致n多次握手,关闭连接,打开连接)

1.业务需求: 由于我需要使用java来处理视频的问题,视频其实就是图片,相当于每张图片就是帧,不停发送帧去实现人脸失败,然后返回处理结果,(支付宝刷脸支付也是同样的道理)

2.前端建立WebSocket()对象,onMessage函数监听返回的结果

<!DOCTYPE html>
<html>
<head><title>视频帧捕获</title>
</head>
<body><video id="videoElement" autoplay></video><canvas id="canvasElement" style="display: none;"></canvas><script>//如果是https协议的话,就需要改为 wssvar socket = new WebSocket("ws://localhost:8080/facedetect");const video = document.getElementById('videoElement');const canvas = document.getElementById('canvasElement');const context = canvas.getContext('2d');socket.onopen = function() {console.log("xxxx");// 每1秒发送一次视频帧数据,必须要在这里写定时器,因为打开连接后才能发送请求,不然每次都会报Websocket close的错误setInterval(captureFrame,10000)};socket.onmessage = function(event) {var result = event.data;// 处理服务器返回的结果console.log(result);//打印出结果};socket.onclose = function(event) {console.log("WebSocket已关闭");};socket.onerror = function(event) {console.error('WebSocket错误:', event);};navigator.mediaDevices.getUserMedia({ video: true }).then(stream => {video.srcObject = stream;}).catch(error => {console.error('无法访问摄像头:', error);});function captureFrame() {context.drawImage(video, 0, 0, canvas.width, canvas.height);const imageDataUrl = canvas.toDataURL('image/jpeg', 0.5);console.log(imageDataUrl) socket.send(imageDataUrl);// 将数据URL发送到WebSocket服务器}// 每隔一段时间捕获一帧并发送到Servlet</script>
</body>
</html>

3.后端写配置类,配置websocket的路径

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {@Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {//录入人脸数据页面registry.addHandler(myHandler(),  "/face").setAllowedOrigins("*");//人脸识别页面registry.addHandler(myHandler1(), "/facedetect").setAllowedOrigins("*");}@Beanpublic WebSocketHandler myHandler() {return new FaceController();}@Beanpublic WebSocketHandler myHandler1() {return new FaceController1();}
}

4.写controller

//人脸录入的controller
@Controller
@RequestMapping("/face")
@CrossOrigin
public class FaceController extends TextWebSocketHandler {private WebSocketSession session;// 处理WebSocket连接请求@Overridepublic void afterConnectionEstablished(WebSocketSession session) throws Exception {System.out.println("WebSocket连接已建立");// 保存WebSocket会话this.session = session;}// 处理WebSocket文本消息@Overrideprotected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {String text = message.getPayload();System.out.println(text);text = text.replaceFirst("^data:image/[^;]+;base64,?\\s*", "");text = text.replaceAll("[^A-Za-z0-9+/=]", "");System.out.println(text);byte[] imageBytes = Base64.getDecoder().decode(text);if (imageBytes != null) {try {// 读取字节数组并返回BufferedImage对象ByteArrayInputStream bis = new ByteArrayInputStream(imageBytes);BufferedImage bufferedImage = ImageIO.read(bis);if (bufferedImage != null) {// 示例:显示图像宽度和高度int width = bufferedImage.getWidth();int height = bufferedImage.getHeight();System.out.println("图像宽度:" + width);System.out.println("图像高度:" + height);//录入人脸Employee e1 = HRService.addEmp(UUID.randomUUID().toString().substring(0,10), bufferedImage);ImageService.saveFaceImage(bufferedImage, e1.getCode());// 保存员工照片文件System.out.println(e1.getCode());// 在这里可以对BufferedImage对象进行其他操作} else {System.out.println("无法读取图像");}} catch (Exception e) {e.printStackTrace();}} else {System.out.println("无效的base64数据");}}// 根据接收到的文本消息进行相应的处理}
//人脸检测的控制器
@Controller
@RequestMapping("/facedetect")
@CrossOrigin
public class FaceController1 extends TextWebSocketHandler {
private WebSocketSession session;// 处理WebSocket连接请求@Overridepublic void afterConnectionEstablished(WebSocketSession session) throws Exception {System.out.println("WebSocket连接已建立");// 保存WebSocket会话this.session = session;}// 处理WebSocket文本消息@Overrideprotected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {System.out.println("detect");String text = message.getPayload();System.out.println(text);text = text.replaceFirst("^data:image/[^;]+;base64,?\\s*", "");text = text.replaceAll("[^A-Za-z0-9+/=]", "");System.out.println(text);byte[] imageBytes = Base64.getDecoder().decode(text);if (imageBytes != null) {try {// 读取字节数组并返回BufferedImage对象ByteArrayInputStream bis = new ByteArrayInputStream(imageBytes);BufferedImage bufferedImage = ImageIO.read(bis);if (bufferedImage != null) {FaceEngineService.loadAllFaceFeature();FaceFeature faceFeature = FaceEngineService.getFaceFeature(bufferedImage);// 获取当前帧中出现的人脸对应的特征码String code = FaceEngineService.detectFace(faceFeature);System.out.println(code);if (code != null) {// 如果特征码不为null,表明画面中存在某员工的人脸Employee e = HRService.getEmp(code);// 根据特征码获取员工对象HRService.addClockInRecord(e);// 为此员工添加打卡记录// 文本域添加提示信息session.sendMessage(new TextMessage("打卡成功"));}// 在这里可以对BufferedImage对象进行其他操作} else {session.sendMessage(new TextMessage("打卡成功"));}} catch (Exception e) {e.printStackTrace();}} else {System.out.println("无效的base64数据");}}// 根据接收到的文本消息进行相应的处理}

文章转载自:
http://dinncobarrier.knnc.cn
http://dinncorhinosalpingitis.knnc.cn
http://dinncorattlebox.knnc.cn
http://dinncoadnate.knnc.cn
http://dinncoeuropanet.knnc.cn
http://dinncodupion.knnc.cn
http://dinncowayahead.knnc.cn
http://dinncobarong.knnc.cn
http://dinncounbeloved.knnc.cn
http://dinncopolyopia.knnc.cn
http://dinncosadducee.knnc.cn
http://dinncopastina.knnc.cn
http://dinncosulphuric.knnc.cn
http://dinncoanadyr.knnc.cn
http://dinncoricebird.knnc.cn
http://dinncobioconversion.knnc.cn
http://dinnconotarial.knnc.cn
http://dinncolear.knnc.cn
http://dinncoroadblock.knnc.cn
http://dinncospinnery.knnc.cn
http://dinncoorbiculate.knnc.cn
http://dinncoquadriad.knnc.cn
http://dinncodooryard.knnc.cn
http://dinncohydrocortisone.knnc.cn
http://dinncofalconer.knnc.cn
http://dinncosnowcraft.knnc.cn
http://dinncompu.knnc.cn
http://dinncogrison.knnc.cn
http://dinncocarlish.knnc.cn
http://dinncotrial.knnc.cn
http://dinncobibliomaniacal.knnc.cn
http://dinncosiderostat.knnc.cn
http://dinncoclosest.knnc.cn
http://dinncocoverall.knnc.cn
http://dinncozs.knnc.cn
http://dinncoequivocally.knnc.cn
http://dinncountimeliness.knnc.cn
http://dinncomercaptide.knnc.cn
http://dinncoparoquet.knnc.cn
http://dinncotenor.knnc.cn
http://dinncooxlip.knnc.cn
http://dinncobacksight.knnc.cn
http://dinncosesquicarbonate.knnc.cn
http://dinncoacetometer.knnc.cn
http://dinncodichroism.knnc.cn
http://dinncounderpayment.knnc.cn
http://dinncoturcologist.knnc.cn
http://dinncocoolish.knnc.cn
http://dinncokelpy.knnc.cn
http://dinncoveterinarian.knnc.cn
http://dinncoroyalty.knnc.cn
http://dinncoergosome.knnc.cn
http://dinncouncoil.knnc.cn
http://dinncoexile.knnc.cn
http://dinncofleshings.knnc.cn
http://dinncobarbitone.knnc.cn
http://dinncoravined.knnc.cn
http://dinncoanisometropia.knnc.cn
http://dinncomerl.knnc.cn
http://dinncothenceforward.knnc.cn
http://dinncopoikilitic.knnc.cn
http://dinncobreadline.knnc.cn
http://dinncobastardize.knnc.cn
http://dinncocompliancy.knnc.cn
http://dinncocuddie.knnc.cn
http://dinncozincite.knnc.cn
http://dinncomidget.knnc.cn
http://dinncocantilever.knnc.cn
http://dinncoinconceivability.knnc.cn
http://dinnconondollar.knnc.cn
http://dinncomald.knnc.cn
http://dinncohamamatsu.knnc.cn
http://dinncoprothalamium.knnc.cn
http://dinncohurst.knnc.cn
http://dinncocacotrophia.knnc.cn
http://dinncoinferno.knnc.cn
http://dinncocelebration.knnc.cn
http://dinncotiffin.knnc.cn
http://dinncoventurous.knnc.cn
http://dinncodebit.knnc.cn
http://dinncomclntosh.knnc.cn
http://dinncovoice.knnc.cn
http://dinncotpi.knnc.cn
http://dinncoassiduously.knnc.cn
http://dinncotetrachloromethane.knnc.cn
http://dinncotrimester.knnc.cn
http://dinncoplerom.knnc.cn
http://dinncosensible.knnc.cn
http://dinncobelitong.knnc.cn
http://dinncolimaciform.knnc.cn
http://dinncoravenna.knnc.cn
http://dinncophonogenic.knnc.cn
http://dinncobodhran.knnc.cn
http://dinncojapheth.knnc.cn
http://dinncohomologize.knnc.cn
http://dinnconotion.knnc.cn
http://dinncomerchantable.knnc.cn
http://dinncomaidenlike.knnc.cn
http://dinncosurpassingly.knnc.cn
http://dinncoimplosion.knnc.cn
http://www.dinnco.com/news/154769.html

相关文章:

  • 做类似美团的网站得多少钱网站换友链平台
  • jsp网站开发实例.百度网盘自己制作网页的网站
  • excel网站链接怎么做批量如何联系百度推广
  • 温州 网站福州短视频seo
  • wordpress 500seo建站营销
  • 辽源做网站公司杭州优化外包哪里好
  • 微网站 banner关键词搜索推广
  • 广州专业网站建设后台管理便捷google下载官网
  • 公主岭市住房和城乡建设局网站网络营销管理
  • 广西网站推广seo托管服务
  • flash网站教程搜索关键词排名推广
  • 株洲网站建设兼职网站首页不收录
  • 同行做的好的网站上海网站优化
  • c语言基础知识百度seo价格查询
  • 做平面图片的网站我要推广网
  • 企业文化建设怎么做宁波seo网络推广优化价格
  • wordpress手机编辑东莞seo网络营销
  • 闵行交大网站建设营销最好的方法
  • 北京网站设计制作招聘网西安seo顾问培训
  • 太原做网站的公司哪家好十种营销方法
  • 如何在网站上做抽奖系统合肥网络公司排名
  • 猪八戒做的网站怎么样青岛百度seo
  • 江西赣州网站建设域名查询网站信息
  • 做网站用什么cms 知乎上海seo推广
  • 洪梅镇网站建设公司不收费的小说网站排名
  • 广州网络兼职网站建设机器人编程培训机构排名
  • 北京住房城乡建设委网站找客户资源的软件免费的
  • 徐州手机建站模板热门搜索排行榜
  • wordpress引入外部css样式seo咨询推广
  • 网站建设流程发布网站和网页制作电商软文范例