>웹 프론트엔드 >H5 튜토리얼 >HTML5를 사용하여 사진 촬영 샘플 code_html5 튜토리얼 팁

HTML5를 사용하여 사진 촬영 샘플 code_html5 튜토리얼 팁

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB원래의
2016-05-16 15:49:011537검색

데모 주소: HTML5 사진 촬영 데모
먼저 HTML 코드 구조를 살펴보겠습니다. 물론 DOM 콘텐츠의 이 부분은 사용자가 사용을 허용한 후에 동적으로 로드되고 생성되어야 합니다. 그들의 카메라 이벤트.
참고: 640X480의 해상도를 사용합니다. JS를 사용하여 동적으로 생성하면 해상도를 유연하게 제어할 수 있습니다.

코드 복사
코드는 다음과 같습니다.

< --
이상적으로 이러한 요소는
클라이언트가 비디오/카메라를 지원하는지 확인할 때까지 생성되지 않지만,
관련 요소를 설명하기 위해 마크업(JavaScript가 아님)으로 생성됩니다.
-->

JavaScript
위의 HTML 요소인 경우 생성되면 JavaScript 부분이 간단해집니다. 생각보다 쉽습니다.


코드 복사코드는 다음과 같습니다. :
/ / 이벤트 수신을 설정하면 DOM 콘텐츠 로딩이 완료되고 효과는 jQuery의 $.ready()와 유사합니다.
window.addEventListener("DOMContentLoaded", function() {
// 캔버스 요소는
캡처에 사용됩니다. var canvas = document.getElementById("canvas"),
context = canvas.getContext ( "2d"),
// 카메라의 데이터 스트림을 수신하고 재생하는 데 사용되는 video 요소
video = document.getElementById("video"),
videoObj = { "video": true },
// 오류 정보를 콘솔에 출력하는 오류 콜백 함수
errBack = function(error) {
if("object" === typeof window.console){
console .log("비디오 캡처 오류: ", error.code);
}
}// 비디오 리스너를 제자리에 배치
// 표준 브라우저의 경우
if(navigator.getUserMedia ) { // 표준
navigator.getUserMedia(videoObj, function(stream) {
video.src = stream;
video.play();
}, errBack)
} else if(navigator.webkitGetUserMedia) { // WebKit 접두어
navigator.webkitGetUserMedia(videoObj, function(stream){
video.src = window.webkitURL.createObjectURL(stream);
video.play() ;
}, errBack);
}
// 사진 버튼에 대한 이벤트 모니터링
document.getElementById("snap").addEventListener("click", function() {
/ / 캔버스에 그립니다
context.drawImage(video, 0, 0, 640, 480)
})
}, false)


웹 서버 아래에 웹 페이지를 놓고 http 프로토콜을 통해 액세스한다고 말합니다.
또한 브라우저 버전이 최신 버전이어야 하며 HTML5의 새로운 기능을 지원해야 합니다.
번역자는 원문대로 번역하지 않았기 때문에 자격이 없습니다. 사용된 브라우저는 크롬 28입니다.
마지막으로 다소 지루한 전체 코드를 붙여넣습니다.



코드 복사코드는 다음과 같습니다.



브라우저 <br><meta name=" " content="EditPlus"> <br><meta name="Author" content="renfufei@qq.com"> <br><meta name="Description" content="투자자: http: / /davidwalsh.name/browser-camera"> <br><script> <br>// 이벤트 수신을 설정하고 DOM 콘텐츠가 로드되며 효과는 jQuery의 $.ready()와 유사합니다. <br>window.addEventListener("DOMContentLoaded", function() { <br>// 캔버스 요소는 <br> 캡처에 사용됩니다. var canvas = document.getElementById("canvas"), <br>context = canvas.getContext ( "2d"), <br>// 카메라의 데이터 스트림을 수신하고 재생하는 데 사용되는 video 요소 <br>video = document.getElementById("video"), <br>videoObj = { "video": true }, <br>// 오류 정보를 콘솔에 출력하는 오류 콜백 함수 <br>errBack = function(error) { <br>if("object" === typeof window.console){ <br>console .log("비디오 캡처 오류: ", error.code); <br>} <br>}// 비디오 리스너를 제자리에 배치 <br>// 표준 브라우저의 경우<br>if(navigator.getUserMedia ) { // 표준 <br>navigator.getUserMedia(videoObj, function(stream) { <br>video.src = stream; <br>video.play(); <br>}, errBack) <br>} else if(navigator.webkitGetUserMedia) { // WebKit 접두어 <br>navigator.webkitGetUserMedia(videoObj, function(stream){ <br>video.src = window.webkitURL.createObjectURL(stream); <br>video.play() ; <br>}, errBack); <br>} <br>// 사진 버튼에 대한 이벤트 모니터링<br>document.getElementById("snap").addEventListener("click", function() { <br>/ / 캔버스에 그리기 <br>context.drawImage(video, 0, 0, 640, 480) <br>}, false); head> <br><body> <br><div> <br><!-- <br />설명: 이 div는 웹캠, 웹캠 <br />너비 및 높이를 허용한 후 동적으로 생성되어야 합니다. 640 *480, 물론 동적으로 제어할 수 있습니다! <br />--> <br /><!-- <br />이상적으로 이러한 요소는 <br />클라이언트가 비디오/를 지원하는지 확인될 때까지 생성되지 않습니다. 카메라이지만 <br />관련 요소를 설명하기 위해 마크업(JavaScript 아님)으로 생성되었습니다. <br />--><video id="video" width="640" height=" 480" 자동 재생></video> <br><button id="snap">스냅 사진</button> <br><canvas id="canvas" width="640" height="480"> ;</캔버스> <br></body> <br><br> </div> </div></div></div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>성명:</span><div>본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.</div></div></div><div class="nphpSytBox"><span>이전 기사:<a class="dBlack" title="HTML5 미로 게임(충돌 감지) 예제 1_html5 튜토리얼 기술" href="https://m.php.cn/ko/faq/6229.html">HTML5 미로 게임(충돌 감지) 예제 1_html5 튜토리얼 기술</a></span><span>다음 기사:<a class="dBlack" title="HTML5 미로 게임(충돌 감지) 예제 1_html5 튜토리얼 기술" href="https://m.php.cn/ko/faq/6233.html">HTML5 미로 게임(충돌 감지) 예제 1_html5 튜토리얼 기술</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>관련 기사</h2><em><a href="https://m.php.cn/ko/article.html" class="bBlack"><i>더보기</i><b></b></a></em><div class="clear"></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-6t+ed+2i-1n-4w" data-ad-client="ca-pub-5902227090019525" data-ad-slot="8966999616"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><ul class="nphpXgwzList"><li><b></b><a href="https://m.php.cn/ko/faq/348281.html" title="AlloyTouch 전체 화면 스크롤 플러그인으로 30초 만에 부드러운 H5 페이지 생성" class="aBlack">AlloyTouch 전체 화면 스크롤 플러그인으로 30초 만에 부드러운 H5 페이지 생성</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ko/faq/348372.html" title="HTML5 실제 전투 및 터치 이벤트 분석(touchstart, touchmove 및 touchend)" class="aBlack">HTML5 실제 전투 및 터치 이벤트 분석(touchstart, touchmove 및 touchend)</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ko/faq/348373.html" title="HTML5 Canvas 9의 이미지 그리기 예제에 대한 자세한 설명" class="aBlack">HTML5 Canvas 9의 이미지 그리기 예제에 대한 자세한 설명</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ko/faq/348374.html" title="정규 표현식과 새로운 HTML5 요소" class="aBlack">정규 표현식과 새로운 HTML5 요소</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ko/faq/348469.html" title="NodeJS와 HTML5를 결합하여 여러 파일을 끌어서 놓아 서버에 업로드하는 방법" class="aBlack">NodeJS와 HTML5를 결합하여 여러 파일을 끌어서 놓아 서버에 업로드하는 방법</a><div class="clear"></div></li></ul></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="5027754603"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!</p></div><div class="footermid"><a href="https://m.php.cn/ko/about/us.html">회사 소개</a><a href="https://m.php.cn/ko/about/disclaimer.html">부인 성명</a><a href="https://m.php.cn/ko/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p> © php.cn All rights reserved </p></div></div></footer><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body><!-- Matomo --><script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="https://tongji.php.cn/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '9']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })(); </script><!-- End Matomo Code --></html>