k23
main
. . . . .
. . . . .
...3...........................
fix
.
no fix
. . 0
. . 1
. . 2
. . 3
. . 4
. . 4
. .
mon_fig
script> var mediaStream = null; function f_start(a){ f_mess("f_start ="+a); if(a==0){ f_mess( "stop 1"); videoElem=video; let stream = videoElem.srcObject; let tracks = stream.getTracks(); tracks.forEach(function(track) { //const capabilities = track.getCapabilities(); // const settings = track.getSettings(); //var capabilities = MediaStreamTrack.getCapabilities(); // f_mess("zoom max ="+capabilities.zoom.max); f_mess("??4a ="+track.getSettings().width); // f_mess("??4b ="+track.getConstraints().width + //" * "+track.getConstraints().height+" * //"+track.getConstraints().zoom); //f_mess("??4c ="+track.getConstraints().viewportOffsetX ); track.stop(); }); } if(a==1){ //f_mess( "stop 1"); var s="" let constraintList = document.getElementById("constraintList"); let supportedConstraints = navigator.mediaDevices.getSupportedConstraints(); for (let constraint in supportedConstraints) { if (supportedConstraints.hasOwnProperty(constraint)) { s+=". . "+constraint; } } s+="
============"; var a=supportedConstraints.facingMode; s+="facingMode="+a; f_mess("constraint ="+ s ); } if(a==2){ videoElem=video; let stream = videoElem.srcObject; let tracks = stream.getTracks(); tracks.forEach(function(track) { //const capabilities = track.getCapabilities(); // const settings = track.getSettings(); //var capabilities = MediaStreamTrack.getCapabilities(); // f_mess("zoom max ="+capabilities.zoom.max); // f_mess("??4b ="+track.getConstraints().width + //" * "+track.getConstraints().height+" * //"+track.getConstraints().zoom); //f_mess("??4c ="+track.getConstraints().viewportOffsetX ); //track.stop(); var s=""; s+="st2=>"; /* s+="w="+track.getSettings().width; s+=" . "; s+="h="+track.getSettings().height; s+=" . "; s+="zo="+track.getSettings().zoom; s+=" . "; s+="frameRate="+track.getSettings().frameRate; s+=" . "; s+="fm="+track.getSettings().focusMode; s+=" . "; s+="iso="+track.getSettings().iso; s+=" . "; s+="a1="+track.getSettings().toString(); s+=" . "; */ s+="
a21="+Object.keys(track.getSettings() ); s+=" . "; s+="
a22="+Object.values(track.getSettings()) ; s+=" . "; s+="
a23="+track.getCapabilities(); s+=" . "; //s+="
a24="+track.getCapabilities().getSettings(); s+=" . "; f_mess(s); }); } if(a==3){ videoElem=video; let stream = videoElem.srcObject; let tracks = stream.getTracks(); tracks.forEach(function(track) { //const capabilities = track.getCapabilities(); // const settings = track.getSettings(); //var capabilities = MediaStreamTrack.getCapabilities(); // f_mess("zoom max ="+capabilities.zoom.max); // f_mess("??4b ="+track.getConstraints().width + //" * "+track.getConstraints().height+" * //"+track.getConstraints().zoom); //f_mess("??4c ="+track.getConstraints().viewportOffsetX ); //track.stop(); var s=""; s+="st3=>"; s+="w="+track.getSettings().width; s+=" . "; s+="h="+track.getSettings().height; s+=" . "; s+="zo="+track.getSettings().zoom; s+=" . "; s+="frameRate="+track.getSettings().frameRate; s+=" . "; s+="fm="+track.getSettings().focusMode; s+=" . "; s+="iso="+track.getSettings().iso; s+=" . "; s+="a1="+track.getSettings().toString(); s+=" . "; s+="
======== getTracks() ============="; var kej=Object.keys(track.getSettings() ); var vol=Object.values(track.getSettings()); for(i=0;i
"+i; s+=" -->"+kej[i] s+=" = "+vol[i] } //s+="
a21="+Object.keys(track.getSettings() ); s+=" . "; //s+="
a22="+Object.values(track.getSettings()) ; s+=" . "; s+="
======== track.getCapabilities() ============="; var kej=Object.keys(track.getCapabilities() ); var vol=Object.values(track.getCapabilities()); for(i=0;i
"+i; s+=" -->"+kej[i] s+=" = "+vol[i] //s+=" => "+Object.values(kej[i]); s+=" => "+Object.values(vol[i]); //s+=" => "+Object.values(vol[i].getSettings()); } s+="
zoom min "+track.getCapabilities().zoom.min; s+="
zoom max "+track.getCapabilities().zoom.max; s+="
zoom step "+track.getCapabilities().zoom.step; //s+="
a21="+Object.keys(track.getSettings() ); s+=" . "; //s+="
a22="+Object.values(track.getSettings()) ; s+=" . "; f_mess(s); }); } if(a==4){ var s=""; s+="
===brauz!! getSupportedConstraints =================="; var d1=navigator.mediaDevices.getSupportedConstraints(); var kej=Object.keys(d1 ); var vol=Object.values(d1); s+=""+Object.keys(d1 ); for(i=0;i
"+i; s+=" -->"+kej[i] s+=" = "+vol[i] } /* s+="
===brauz getCapabilities() =================="; var d1=navigator.mediaDevices.getCapabilities(); var kej=Object.keys(d1 ); var vol=Object.values(d1); s+=""+Object.keys(d1 ); for(i=0;i
"+i; s+=" -->"+kej[i] s+=" = "+vol[i] } */ /* s+="
===brauz getTracks() =================="; var d1=navigator.mediaDevices.getTracks(); var kej=Object.keys(d1 ); var vol=Object.values(d1); s+=""+Object.keys(d1 ); for(i=0;i
"+i; s+=" -->"+kej[i] s+=" = "+vol[i] } */ f_mess(s); } if(a==5){ if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) { f_mess("enumerateDevices() not supported."); return; } var s=""; // List cameras and microphones. s+="5555="; navigator.mediaDevices.enumerateDevices() .then(function(devices) { devices.forEach(function(device) { s+="
==>"+device.kind + ": " + device.label + " id = " + device.deviceId; }); }) .catch(function(err) { s+=err.name + ": " + err.message; }); f_mess(s); } } //var video = document.querySelector('video'), canvas; var video = document.querySelector("#videoElement"); if (navigator.mediaDevices === undefined) { navigator.mediaDevices = {}; } if (navigator.mediaDevices.getUserMedia === undefined) { navigator.mediaDevices.getUserMedia = function (constraints) { var getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia; if (!getUserMedia) { return Promise.reject(new Error('getUserMedia is not implemented in this browser')); f_mess("err 1 no vid "); } return new Promise(function (resolve, reject) { getUserMedia.call(navigator, constraints, resolve, reject); }); } } var constraints = {audio: false, video: {width: 640, height: 480,zoom:800}}; var constraints = {audio: false, video: {width: 640, height: 480,zoom:0.5,aspectRatio:1, facingMode: { exact: "environment" } }}; var constraints = {audio: false, video: {width: 5000,zoom:200,aspectRatio:1, facingMode: { exact: "environment" } }}; var constraints = {audio: false, video: {width: 1080,zoom:2,aspectRatio:1,frameRate:20 , facingMode: { exact: "environment" } }}; navigator.mediaDevices.getUserMedia(constraints) .then(function (stream) { mediaStream = stream; f_mess("zoom 1"); // sleep(1000); f_mess("zoom 2"); /* const track = mediaStream.getVideoTracks()[0]; const capabilities = track.getCapabilities(); const settings = track.getSettings(); */ //var capabilities = MediaStreamTrack.getCapabilities(); // f_mess("zoom max ="+capabilities.zoom.max); /* // const input = document.querySelector('input[type="range"]'); // Check whether zoom is supported or not. // if (!('zoom' in capabilities)) { // return Promise.reject('Zoom is not supported by ' + track.label); // } // Map zoom to a slider element. input.min = capabilities.zoom.min; input.max = capabilities.zoom.max; input.step = capabilities.zoom.step; input.value = settings.zoom; input.oninput = function(event) { track.applyConstraints({advanced: [ {zoom: event.target.value} ]}); } */ if ("srcObject" in video) { video.srcObject = stream; } else { video.src = window.URL.createObjectURL(stream); } video.onloadedmetadata = function (e) { video.play(); }; //video.addEventListener('click', takeSnapshot); }) .catch(function (err) { f_mess("err mess=="+err.name + ": " + err.message); }); function f_fix() { // var img = document.querySelector('img') || document.createElement('img'); // var context; var width = video.offsetWidth, height = video.offsetHeight; // img = document.createElement('canvas'); img = document.createElement('canvas'); var canvas=img; var ctx = canvas.getContext("2d"); canvas.width=width; canvas.height=height ; ctx.imageSmoothingEnabled = false; ctx.drawImage(video, 0, 0, width, height); ctx.fillStyle="rgba(20,20,220,1)" ; ctx.fillRect(10, 10, 5, 165); ctx.fillRect(10, 10, 9, 16); //ctx.drawImage(video, width/4, height/4, width/2, height/2 , 0,0, width, height); //ctx.drawImage(img, x1, y1, width, height , 0,0, width*kk, height*kk ); var canvas = document.getElementById("Can_92"); var ctx = canvas.getContext("2d"); canvas.width=width; canvas.height=height ; ctx.imageSmoothingEnabled = false; ctx.drawImage(img, 50, 0, width, height); var canvas = document.getElementById("Can_93"); var ctx = canvas.getContext("2d"); canvas.width=width*1; canvas.height=height*1 ; ctx.imageSmoothingEnabled = false; ctx.drawImage(img, 0, 0, width, height); f_mess("set= "+width+" * "+height); } var n_92=0; var w1_92=100; var h1_92=100; var w2_92=200; var h2_92=200; var kk_92=200; document.getElementById('Can_92').onmousedown = function(e) { var xm3=50; var ym3=50; xm3 = e.offsetX==undefined?e.layerX:e.offsetX; ym3 = e.offsetY==undefined?e.layerY:e.offsetY; // try {f_start(0); } catch (err) { } f_mess("m down= "+xm3+" * "+ym3); //f_start(0); var width = img.width, height = img.height; var canvas = document.getElementById("Can_92"); var ctx = canvas.getContext("2d"); canvas.width=width; canvas.height=height ; ctx.drawImage(img, 0, 0, width, height); ctx.fillStyle="rgba(20,200,220,1)" ; ctx.fillRect(330, 144, 5, 165); ctx.fillRect(330, 144, 9, 16); n_92++; if( (n_92 & 1)==0 ){ w1_92=xm3; h1_92=ym3; }else{ w2_92=xm3+0; h2_92=ym3+0; } ctx.strokeStyle = "#000000"; ctx.lineWidth=5; ctx.beginPath(); ctx.moveTo(w1_92, h1_92); ctx.lineTo(w2_92, h2_92); ctx.stroke(); ctx.strokeStyle = "#ffffff"; ctx.lineWidth=3; ctx.beginPath(); ctx.moveTo(w1_92, h1_92); ctx.lineTo(w2_92, h2_92); ctx.stroke(); //----------------- var width =Math.abs(w1_92-w2_92); var height = Math.abs(h1_92-h2_92); var x1=w1_92; var x2=w2_92; if(w1_92>w2_92){ x1=w2_92; x2=w1_92; } var y1=h1_92; var y2=h2_92; if(h1_92>h2_92){ y1=h2_92; y2=h1_92; } kk_92=1; if(width<=800)kk_92=2; if(width<=400)kk_92=4; if(width<=200)kk_92=8; if(width<=100)kk_92=16; var canvas = document.getElementById("Can_93"); var ctx = canvas.getContext("2d"); canvas.width=width*kk_92; canvas.height=height*kk_92 ; ctx.imageSmoothingEnabled = false; ctx.drawImage(img, 0, 0, width, height); ctx.drawImage(img, x1, y1, width, height , 0,0, width*kk_92, height*kk_92 ); //octx.drawImage(oc, 0, 0, oc.width * 0.5, oc.height * 0.5); //drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight); // Первый параметр указывает на изображение // sx, sy, sWidth, sHeight фрагмента на изображение-источнике // dx, dy, dWidth, dHeight координаты отрисовки фрагмента на холсте } var img = new Image(); img.onload = function() { var width = img.width, height = img.height; var canvas = document.getElementById("Can_92"); ctx = canvas.getContext("2d"); canvas.width=width; canvas.height=height ; ctx.drawImage(img, 0, 0, width, height); f_mess("init= "+width+" * "+height); } img.src = 'fi2.JPG'; var rez_bdu=1; var x_93=200; var y_93=200; var r_93=80; var rz_93=20; document.getElementById('Can_93').onmousedown = function(e) { var xm3=50; var ym3=50; xm3 = e.offsetX==undefined?e.layerX:e.offsetX; ym3 = e.offsetY==undefined?e.layerY:e.offsetY; var width =Math.abs(w1_92-w2_92); var height = Math.abs(h1_92-h2_92); var x1=w1_92; var x2=w2_92; if(w1_92>w2_92){ x1=w2_92; x2=w1_92; } var y1=h1_92; var y2=h2_92; if(h1_92>h2_92){ y1=h2_92; y2=h1_92; } if(ym3
width*kk_92/2){x_93+=rz_93*5;}else{x_93-=rz_93*5;} }else if(ym3<3*height*kk_92/4){ if(xm3
width*kk_92/2){r_93+=rz_93*5;}else{r_93-=rz_93*5;} } if(r_93<10)r_93=10; if(x_93<2)x_93=2; if(y_93<2)y_93=2; if(r_93<2)r_93=2; if(x_93>width*kk_92)x_93=width*kk_92; if(y_93>height*kk_92)y_93=height*kk_92; var s=""; s+="93= "+xm3+" * "+ym3+" . r= "+(r_93); s+="/"+kk_92+"="+(r_93/kk_92).toFixed(1); //s+="
8.5 2m=64px= 2.43° 0.40"; var ugg= (r_93/kk_92)*2.43/64; rez_bdu=ugg/6; s+="
"+(ugg).toFixed(2)+"°=>"+(ugg/6).toFixed(2)+" бду"; f_mess(s); var canvas = document.getElementById("Can_93"); var ctx = canvas.getContext("2d"); canvas.width=width*kk_92; canvas.height=height*kk_92 ; ctx.imageSmoothingEnabled = false; ctx.drawImage(img, 0, 0, width, height); ctx.drawImage(img, x1, y1, width, height , 0,0, width*kk_92, height*kk_92 ); //ctx.imageSmoothingEnabled = true; ctx.fillStyle="rgba(120,120,240,1)" ; ctx.font = "bold 90px family, sans-serif"; ctx.fillText( ""+rz_93 , 5, 88); ctx.fillStyle="rgba(220,220,220,1)" ; ctx.fillRect(0, 2, 5, height*kk_92-4); ctx.fillStyle="rgba(20,20,220,1)" ; ctx.fillRect(0, 1*height*kk_92/4, 5, height*kk_92/4); ctx.fillRect(0, 3*height*kk_92/4, 5, height*kk_92/4); ctx.strokeStyle = "#ffffff"; ctx.lineWidth=5; ctx.beginPath(); ; ctx.arc(x_93,y_93,r_93,0, 2*Math.PI,true); ctx.moveTo(x_93, 5); ctx.lineTo(x_93, height*kk_92-10) ctx.moveTo(x_93+8, y_93+100*kk_92/6); ctx.lineTo(x_93-8, y_93+100*kk_92/6) ctx.moveTo(5, y_93); ctx.lineTo( width*kk_92-10, y_93) ctx.stroke(); ctx.strokeStyle = "#000000"; ctx.lineWidth=1; ctx.beginPath(); ; ctx.arc(x_93,y_93,r_93,0, 2*Math.PI,true); ctx.moveTo(x_93, 5); ctx.lineTo(x_93, height*kk_92-10) ctx.moveTo(5, y_93); ctx.lineTo( width*kk_92-10, y_93) ctx.stroke(); }
. . . . . . H=
. . .
. . . . . . . L=
. . .
mon_fig52
"
8.5sm 2m=64px= 2.43° 0.40";
onFocus="this.select();" onKeyUp="f_ev_f12();
u=h/l
http://qaru.site/questions/14061265/take-snapshot-from-webcam-on-website img = Object.assign({}, img2);