** La page html : **
************************
Code : Tout sélectionner
<!DOCTYPE html>
<html lang="fr">
<head>
<title>Capture Webcam</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=yes">
<script type="text/javascript">
var mediaStream
var base64Image
function init() {
navigator.mediaDevices.getUserMedia({ audio: false, video: { width: 800, height: 600 } }).then(function(mediaStream) {
var video = document.getElementById('sourcevid');
video.srcObject = mediaStream;
video.onloadedmetadata = function(e) {
video.play();
};
}).catch(function(err) { console.log(err.name + ": " + err.message); });
}
function clone()
{
var vivi = document.getElementById('sourcevid');
var canvas1 = document.getElementById('cvs').getContext('2d');
canvas1.drawImage(vivi, 0,0, 320, 240);
var base64 = document.getElementById('cvs').toDataURL("image/png"); //l'image au format base 64
base64Image = base64;
}
function stop()
{
var video = document.getElementById('sourcevid');
video.srcObject = mediaStream;
video.onloadedmetadata = function(e) {
this.getVideoTracks().forEach(function(track) {
track.stop();
});
};
}
function Ajax()
{
var formData = new FormData();
formData.append("tar", base64Image);
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
alert(xhttp.responseText);
}
};
xhttp.open("POST", "../cgi-bin/CaptureAndInsertDBImage.exe", true);
xhttp.send(formData);
}
window.onload = init;
</script>
</head>
<body>
<video id="sourcevid" width='320' height='240' autoplay="true" style='display:inline'></video>
<div id="main" style='width:320px;height:240px;margin:auto;display:inline'>
<canvas id="cvs" width='320' height='240' ></canvas>
</div>
<button onclick='clone()' style='height:50px;width:80px;margin:auto'>Capture</button>
<button onclick='stop()' style='height:50px;width:80px;margin:auto'>Stop</button>
<button onclick='Ajax()' style='height:50px;width:80px;margin:auto'>Send</button>
</body>
</html>
***********************************
*** Maintenant le CGI Purebasic : **
***********************************
Code : Tout sélectionner
If Not InitCGI() Or Not ReadCGI()
End
EndIf
Procedure.s GetBase64ForBlob(myBase64$)
UseSQLiteDatabase()
mabase$ = "e:\photos.db"
If OpenDatabase(0, mabase$,"","")
sql$ = " INSERT INTO capture (photo) VALUES (?) "
base64Length = StringByteLength(myBase64$, #PB_Ascii)
*DecodeBuffer = AllocateMemory(base64Length + (base64Length / 2) + SizeOf(character))
If *DecodeBuffer
*OutputBuffer = AllocateMemory(base64Length)
If *OutputBuffer
BytesPoked.i = PokeS(*DecodeBuffer, myBase64$, base64Length, #PB_Ascii | #PB_String_NoZero)
If BytesPoked
ActualBytesDecoded = Base64Decoder(myBase64$, *OutputBuffer, base64Length)
If ActualBytesDecoded
SetDatabaseBlob(0, 0, *OutputBuffer, Len(myBase64$) )
DatabaseUpdate(0, sql$)
EndIf
EndIf
EndIf
EndIf
EndIf
EndProcedure
WriteCGIHeader(#PB_CGI_HeaderContentType,"text/html",#PB_CGI_LastHeader)
image$ = CGIParameterValue("tar")
;nom$ = CGIParameterValue("nom")
Resultat = FindString(image$, ",")
chaineToDel$ = StringField(image$, 1, ",")
Resultat$ = RemoveString(image$, chaineToDel$ + "," , 0,0,1 )
x = Len(Resultat$)
GetBase64ForBlob(Resultat$)
WriteCGIString("Envoie réussi !")
WriteCGIString( Chr(10) )
WriteCGIString( "(" + x + ")" )