前幾年,要在網頁上實現拍照是非常困難的,甚至都不知道怎么實現。但是,隨著javascript和php的發展,拍照已經不再是問題。現在很多網站都可以通過javascript+php實現拍照,其中一些比較常見的應用包括在線簽名、頭像上傳等等。下面就來詳細談談javascript+php如何實現拍照。
首先,我們需要明白的是,javascript是瀏覽器端的腳本語言,而php是服務端的腳本語言。因此,在實現拍照時,javascript負責獲取攝像頭,把拍攝到的數據傳給php處理。接下來,我們就來一步步實現這些。
在javascript中,要獲取攝像頭,我們可以使用WebRTC技術。WebRTC已經成為現在網頁中實時音視頻通訊的常見方法。我們可以使用getUserMedia函數來獲取攝像頭,代碼如下:
在php中,我們需要使用GD庫處理攝像頭數據,GD庫是php中最常用的圖片處理庫之一。我們可以使用imagecreatefromstring函數來創建一個圖像資源,并使用imagejpeg函數將圖像資源輸出至瀏覽器。代碼如下:
以上代碼會把webcam拍攝到的圖片輸出至瀏覽器,可以通過img標簽來展現在網頁上。至此,javascript+php實現拍照的完整流程就介紹完了。以下是完整代碼:
總的來說,實現javascript+php拍照非常容易,只需要幾行代碼就可以搞定。但是需要注意的是,getUserMedia函數在不同瀏覽器上的兼容性不同,建議使用WebRTC兼容性較好的現代瀏覽器。
首先,我們需要明白的是,javascript是瀏覽器端的腳本語言,而php是服務端的腳本語言。因此,在實現拍照時,javascript負責獲取攝像頭,把拍攝到的數據傳給php處理。接下來,我們就來一步步實現這些。
在javascript中,要獲取攝像頭,我們可以使用WebRTC技術。WebRTC已經成為現在網頁中實時音視頻通訊的常見方法。我們可以使用getUserMedia函數來獲取攝像頭,代碼如下:
navigator.mediaDevices.getUserMedia({video: true}).then(function(stream) { //這里stream就是攝像頭拍攝的數據流 });
在php中,我們需要使用GD庫處理攝像頭數據,GD庫是php中最常用的圖片處理庫之一。我們可以使用imagecreatefromstring函數來創建一個圖像資源,并使用imagejpeg函數將圖像資源輸出至瀏覽器。代碼如下:
$image_data = file_get_contents('php://input'); $image_src = imagecreatefromstring($image_data); imagejpeg($image_src);
以上代碼會把webcam拍攝到的圖片輸出至瀏覽器,可以通過img標簽來展現在網頁上。至此,javascript+php實現拍照的完整流程就介紹完了。以下是完整代碼:
<!DOCTYPE html> <html> <head> <title>拍照示例</title> </head> <body> <h1>拍照示例</h1> <br> <div> <video id="video" width="640" height="480" autoplay></video> <button id="snap">拍照</button> </div> <br> <canvas id="canvas" width="640" height="480"></canvas> <br> <script> navigator.mediaDevices.getUserMedia({video: true}).then(function(stream) { var video = document.getElementById('video'); video.srcObject = stream; }); <br> var canvas = document.getElementById('canvas'); var context = canvas.getContext('2d'); var video = document.getElementById('video'); var photo = document.getElementById('photo'); <br> document.getElementById('snap').addEventListener('click', function() { context.drawImage(video, 0, 0, 640, 480); var dataURL = canvas.toDataURL(); var xhr = new XMLHttpRequest(); xhr.open('POST', 'save.php', true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.onreadystatechange = function() { if (xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) { photo.src = xhr.responseText; } }; xhr.send('image_data=' + encodeURIComponent(dataURL)); }); </script> <br> </body> </html> <br> <?php $image_data = file_get_contents('php://input'); $image_src = imagecreatefromstring($image_data); imagejpeg($image_src); ?>
總的來說,實現javascript+php拍照非常容易,只需要幾行代碼就可以搞定。但是需要注意的是,getUserMedia函數在不同瀏覽器上的兼容性不同,建議使用WebRTC兼容性較好的現代瀏覽器。