ホームページ > 記事 > ウェブフロントエンド > JavaScript と WebSocket: 効率的なリアルタイム画像処理システムの構築
JavaScript は Web 開発で広く使用されているプログラミング言語であり、WebSocket はリアルタイム通信に使用されるネットワーク プロトコルです。 2 つの強力な機能を組み合わせることで、効率的なリアルタイム画像処理システムを構築できます。この記事では、JavaScript と WebSocket を使用してこのシステムを実装する方法と、具体的なコード例を紹介します。
まず第一に、リアルタイム画像処理システムのニーズと目標を明確にする必要があります。リアルタイムの画像データを収集できるカメラ デバイスがあるとします。これらの画像データをサーバーに送信して処理し、処理結果をユーザーのブラウザ上でリアルタイムに表示できるようにしたいと考えています。したがって、データ伝送と画像処理の両方を処理できるシステムを設計する必要があります。
まず、クライアントから画像データを受信して処理するための WebSocket サーバーを作成する必要があります。以下は、Node.js で記述された単純な WebSocket サーバー側のコード例です。
const WebSocket = require('ws'); const wss = new WebSocket.Server({ port: 8080 }); wss.on('connection', function connection(ws) { console.log('New client connected'); ws.on('message', function incoming(message) { // 在这里进行图像处理 const processedImage = processImage(message); // 将处理后的图像数据发送给客户端 ws.send(processedImage); }); ws.on('close', function() { console.log('Client disconnected'); }); }); function processImage(image) { // 在这里进行图像处理的具体逻辑 // ... return processedImage; }
上記のコードは、Node.js の WebSocket ライブラリを使用してサーバー側 WebSocket を作成します。新しいクライアントが接続すると、サーバーは関連情報を出力し、クライアントが画像データを送信するのを待ちます。画像データを受信すると、サーバーは processImage
関数を呼び出して画像データを処理し、処理結果をクライアントに返します。
クライアントの Web ページでは、画像データを収集してサーバーに送信するための JavaScript コードを記述する必要があります。以下は、単純なクライアント サンプル コードです。
const socket = new WebSocket('ws://localhost:8080'); socket.onopen = function() { console.log('Connected to server'); }; socket.onmessage = function(event) { // 接收到服务器发送的图像数据时的回调函数 const processedImage = event.data; // 在Web页面上展示处理后的图像数据 displayImage(processedImage); }; function sendImage(imageData) { // 发送图像数据给服务器 socket.send(imageData); } function displayImage(imageData) { // 在Web页面上展示图像数据的具体逻辑 // ... }
上記のコードでは、ブラウザの組み込み WebSocket API を使用して WebSocket 接続を作成し、関連するイベント処理関数を実装します。サーバーへの接続に成功すると、コンソールに関連情報が出力されます。サーバーから送信された画像データを受信すると、displayImage
関数が呼び出され、処理された画像データが表示されます。
さらに、Web ページに画像収集機能も実装する必要があります。 HTML5 が提供する getUserMedia
API を使用して、カメラデバイスのリアルタイム画像データを取得し、サーバーに送信できます。以下は、単純な画像取得のサンプル コードです。
// 获取设备的媒体流 navigator.mediaDevices.getUserMedia({ video: true }) .then(function(stream) { const video = document.querySelector('video'); const canvas = document.createElement('canvas'); const ctx = canvas.getContext('2d'); video.srcObject = stream; video.play(); setInterval(function() { // 将视频帧绘制到canvas上 ctx.drawImage(video, 0, 0, canvas.width, canvas.height); // 获取canvas中的图像数据 const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); // 将图像数据发送给服务器 sendImage(imageData); }, 1000 / 10); }) .catch(function(error) { console.log('Error accessing media devices:', error); });
上記のコードは、getUserMedia
API を使用してデバイスのメディア ストリームを取得し、HTML5<video api canvas>getImageData<code> 関数を呼び出して画像データを取得します。最後に、画像データをサーバーに送信します。
以上がJavaScript と WebSocket: 効率的なリアルタイム画像処理システムの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。