Để ứng dụng, có thể chạy mở được camera các bạn, nên chạy trên giao thức https.
Hoặc các bạn chép vào webserver: IIS hay Apache... để có thực bật chức năng sử dụng camera trên website nhé.
Code HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<meta http-equiv='X-UA-Compatible' content='IE=edge'>
<title>Demo Capture</title>
<meta name='viewport' content='width=device-width, initial-scale=1'>
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link rel='stylesheet' type='text/css' media='screen' href='style/webcam-demo.css'>
<script src="//code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="js/webcam-easy.min.js"></script>
</head>
<body>
<main id="webcam-app">
<div class="form-control webcam-start" id="webcam-control">
<label class="form-switch">
<input type="checkbox" id="webcam-switch">
<i></i>
<span id="webcam-caption">Click to Start Camera</span>
</label>
<button id="cameraFlip" class="btn d-none"></button>
</div>
<div id="errorMsg" class="col-12 col-md-6 alert-danger d-none">
Fail to start camera, please allow permision to access camera. <br/>
If you are browsing through social media built in browsers, you would need to open the page in Sarafi (iPhone)/ Chrome (Android)
<button id="closeError" class="btn btn-primary ml-3">OK</button>
</div>
<div class="md-modal md-effect-12">
<div id="app-panel" class="app-panel md-content row p-0 m-0">
<div id="webcam-container" class="webcam-container col-12 d-none p-0 m-0">
<video id="webcam" autoplay playsinline width="640" height="480"></video>
<canvas id="canvas" class="d-none"></canvas>
<div class="flash"></div>
<audio id="snapSound" src="audio/snap.wav" preload = "auto"></audio>
</div>
<div id="cameraControls" class="cameraControls">
<a href="#" id="exit-app" title="Exit App" class="d-none"><i class="material-icons">exit_to_app</i></a>
<a href="#" id="take-photo" title="Take Photo"><i class="material-icons">camera_alt</i></a>
<a href="#" id="upload-photo" title="Upload Photo" class="d-none"><i class="material-icons">backup</i></a>
<a href="#" id="download-photo" download="selfie.png" target="_blank" title="Save Photo" class="d-none"><i class="material-icons">file_download</i></a>
<a href="#" id="resume-camera" title="Resume Camera" class="d-none"><i class="material-icons">camera_front</i></a>
</div>
</div>
</div>
<div class="md-overlay"></div>
</main>
<script src='js/app.js'></script>
</body>
</html>
File app.js
const webcamElement = document.getElementById('webcam');
const canvasElement = document.getElementById('canvas');
const snapSoundElement = document.getElementById('snapSound');
const webcam = new Webcam(webcamElement, 'user', canvasElement, snapSoundElement);
$("#webcam-switch").change(function () {
if(this.checked){
$('.md-modal').addClass('md-show');
webcam.start()
.then(result =>{
cameraStarted();
console.log("webcam started");
})
.catch(err => {
displayError();
});
}
else {
cameraStopped();
webcam.stop();
console.log("webcam stopped");
}
});
$('#cameraFlip').click(function() {
webcam.flip();
webcam.start();
});
$('#closeError').click(function() {
$("#webcam-switch").prop('checked', false).change();
});
function displayError(err = ''){
if(err!=''){
$("#errorMsg").html(err);
}
$("#errorMsg").removeClass("d-none");
}
function cameraStarted(){
$("#errorMsg").addClass("d-none");
$('.flash').hide();
$("#webcam-caption").html("on");
$("#webcam-control").removeClass("webcam-off");
$("#webcam-control").addClass("webcam-on");
$(".webcam-container").removeClass("d-none");
if( webcam.webcamList.length > 1){
$("#cameraFlip").removeClass('d-none');
}
$("#wpfront-scroll-top-container").addClass("d-none");
window.scrollTo(0, 0);
$('body').css('overflow-y','hidden');
}
function cameraStopped(){
$("#errorMsg").addClass("d-none");
$("#wpfront-scroll-top-container").removeClass("d-none");
$("#webcam-control").removeClass("webcam-on");
$("#webcam-control").addClass("webcam-off");
$("#cameraFlip").addClass('d-none');
$(".webcam-container").addClass("d-none");
$("#webcam-caption").html("Click to Start Camera");
$('.md-modal').removeClass('md-show');
}
$("#upload-photo").click(function () {
let Image = document.querySelector('#download-photo').href.replace(/^data:image/[a-z]+;base64,/, "");
const payload = {
image : Image
}
$.ajax({
type: 'POST',
url: 'Default.aspx/SaveCapturedImage',
processData: false,
contentType: 'application/json',
data: JSON.stringify(payload),
success: function (response) {
var jData = JSON.parse(response.d);
Toastify({
gravity: "top",
position: "right",
duration: 3000,
text: jData.message,
className: "info",
style: {
background: jData.status ? "linear-gradient(to right, #00b09b, #96c93d)" : "linear-gradient(to right, #F70000, #7D1713)",
}
}).showToast();
if (jData.status) {
$("#resume-camera").click();
}
}
});
});
$("#take-photo").click(function () {
beforeTakePhoto();
let picture = webcam.snap();
document.querySelector('#download-photo').href = picture;
afterTakePhoto();
// console.log(picture);
});
function beforeTakePhoto(){
$('.flash')
.show()
.animate({opacity: 0.3}, 500)
.fadeOut(500)
.css({'opacity': 0.7});
window.scrollTo(0, 0);
$('#webcam-control').addClass('d-none');
$('#cameraControls').addClass('d-none');
}
function afterTakePhoto(){
webcam.stop();
$('#canvas').removeClass('d-none');
$('#take-photo').addClass('d-none');
$('#exit-app').removeClass('d-none');
$('#download-photo').removeClass('d-none');
$('#upload-photo').removeClass('d-none');
$('#resume-camera').removeClass('d-none');
$('#cameraControls').removeClass('d-none');
}
function removeCapture(){
$('#canvas').addClass('d-none');
$('#webcam-control').removeClass('d-none');
$('#cameraControls').removeClass('d-none');
$('#take-photo').removeClass('d-none');
$('#exit-app').addClass('d-none');
$('#download-photo').addClass('d-none');
$('#upload-photo').addClass('d-none');
$('#resume-camera').addClass('d-none');
}
$("#resume-camera").click(function () {
webcam.stream()
.then(facingMode =>{
removeCapture();
});
});
$("#exit-app").click(function () {
removeCapture();
$("#webcam-switch").prop("checked", false).change();
});
Chi tiết các bạn có thể download full source code bên dưới về để sử dụng.
DOWNLOAD FULL CODE
Mật Khẩu Giải Nén : hungqb.com
Theo LapTrinhVB.Net
![[ASP.NET] Using camera webcame in Website [ASP.NET] Using camera webcame in Website](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8JzcJ8w12AzCXLT4GRoMLD_FXbKYPKx2QE0Cg9CeDTQLLGbDCNn5VUYDxiWRF4Fa46EuHPDi6fVupNnLnMEoXG_IiUEf_pzyNx3rfgd3Zu39655dI7gFB922ICN7J4qTT57gpuRuBEG2yQgvVoPIcaKLwAqZ6buwFpd_ZHxI37cIRP6XK9E4WBlgm/w640-h438/capture_camera_website.png.webp)
MỌI NGƯỜI ÁP DỤNG THỬ XEM NHÉ (y)
ReplyDeleteK có demo hả e?
ReplyDeleteTest reply ?
ReplyDelete