Add files via upload
Esse commit está contido em:
+21991
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+15452
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+137
@@ -0,0 +1,137 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>JPEGCam Test Page</title>
|
||||
<meta name="generator" content="TextMate http://macromates.com/">
|
||||
<meta name="author" content="Joseph Huckaby">
|
||||
<!-- Date: 2008-03-15 -->
|
||||
</head>
|
||||
<body>
|
||||
<table border><tr><td valign=top width=1>
|
||||
<h1>Sistema de aquisição<br> de imagens de voluntários e detecção de faces</h1>
|
||||
|
||||
|
||||
<script type="text/javascript" src="webcam.js"></script>
|
||||
|
||||
<script language="JavaScript">
|
||||
|
||||
//Trecho inserido por wellton para enviar a imagem tirada via ajax para o para o processaImagem.php
|
||||
function chamadaAjax(imagem){
|
||||
|
||||
new funcao_ajax();
|
||||
ajax.open("GET", "processaImagem.php?imagem="+imagem, true);
|
||||
new carregando(2, imagem);
|
||||
ajax.send(null);
|
||||
}
|
||||
|
||||
function funcao_ajax(){
|
||||
if(window.XMLHttpRequest){
|
||||
ajax = new XMLHttpRequest();
|
||||
}else if(window.ActiveXObject){
|
||||
ajax = new ActiveXObject("Microsoft.XMLHTTP");
|
||||
}else{
|
||||
ajax = new ActiveXObject("Msxml2.XMLHTTP");
|
||||
}
|
||||
return ajax;
|
||||
}
|
||||
|
||||
function carregando(num, imagem){
|
||||
|
||||
ajax.onreadystatechange = function (){
|
||||
|
||||
document.getElementById("carregar"+num).innerHTML = "detectando faces, aguarde...";
|
||||
|
||||
if ( ajax.readyState == 4) { // Completo
|
||||
if ( ajax.status == 200) { // resposta do servidor OK
|
||||
document.getElementById("carregar"+num).innerHTML = ajax.responseText;
|
||||
if(num==1) chamadaAjax(imagem);
|
||||
} else {
|
||||
alert( "Problema: " + ajax.statusText );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
webcam.set_api_url( 'test.php' );
|
||||
webcam.set_quality( 100 ); // Qualidade JPEG (1 - 100)
|
||||
webcam.set_shutter_sound( true ); // toca o som da foto
|
||||
</script>
|
||||
|
||||
<!-- Próximo, definir uma foto 320x240 -->
|
||||
<script language="JavaScript">
|
||||
document.write( webcam.get_html(320, 240) );
|
||||
</script>
|
||||
|
||||
<!-- Alguns botões para controle -->
|
||||
<br/><form>
|
||||
|
||||
|
||||
<input type=button value="configurar WebCam..." onClick="webcam.configure()">
|
||||
|
||||
<input type=button value="Tirar foto" onClick="take_snapshot()">
|
||||
</form>
|
||||
|
||||
<!-- código para ser executado e enviar para test.php -->
|
||||
<script language="JavaScript">
|
||||
webcam.set_hook( 'onComplete', 'my_completion_handler' );
|
||||
|
||||
|
||||
function take_snapshot() {
|
||||
// tira a foto e envia para o sevidor
|
||||
document.getElementById('upload_results').innerHTML = '<h1>Enviando...</h1>';
|
||||
webcam.snap();
|
||||
}
|
||||
|
||||
function my_completion_handler(msg) {
|
||||
// Extrai a URL da saída do PHP
|
||||
|
||||
if (msg.match(/(http\:\/\/\S+)/)) {
|
||||
var image_url = RegExp.$1;
|
||||
|
||||
//mostra a imagem JPEG na tela
|
||||
document.getElementById('upload_results').innerHTML =
|
||||
'<h1>Envio para o servidor com sucesso!</h1>' +
|
||||
'<h3>Caminho da Imagem: ' + image_url + '</h3>' +
|
||||
'<img src="' + image_url + '">';
|
||||
|
||||
// Reinicia a camera para tirar outra foto
|
||||
webcam.reset();
|
||||
}
|
||||
else alert("PHP Error: " + msg);
|
||||
|
||||
var partes=image_url.split("/");
|
||||
|
||||
|
||||
|
||||
var imagem = partes[4];
|
||||
partes=imagem.split(".");
|
||||
imagem = partes[0];
|
||||
alert(imagem);
|
||||
chamadaAjax(imagem);
|
||||
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
</td><td valign=top width=1>
|
||||
<div id="upload_results" style="background-color:#eee;"></div>
|
||||
</td>
|
||||
<td valign=top>
|
||||
<div style="background-color:#aaa;" id='carregar2' ></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right" colspan="3">
|
||||
Configurado e modificado por @WelltonCosta
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
//usando a bibliteca do OpenCV
|
||||
use OpenCV\Image as Image;
|
||||
|
||||
//Exibindo texto na tela
|
||||
echo "<h1>Imagem Processada</h1>";
|
||||
|
||||
//Função que detecta e marca com uma linha azul a face
|
||||
//gravando em arquivo o arquivo com a face detectada
|
||||
//e uma imagem apenas com a face recortada da original
|
||||
detectaFace($_GET["imagem"].".jpg");
|
||||
|
||||
//Exibindo a imagem com a face detectada na tela
|
||||
echo " <br><img src='".$_GET['imagem']."FaceMarcada.jpg'> ";
|
||||
|
||||
//Exibindo a face na tela
|
||||
echo "<img src='".$_GET['imagem']."FaceSelecionada.jpg'>";
|
||||
|
||||
//função detectaFace
|
||||
function detectaFace($imagem){
|
||||
//carregando pixels da imagem via OpenCV e jogando
|
||||
//valores na variávei $i
|
||||
$i = Image::load($imagem, Image::LOAD_IMAGE_COLOR);
|
||||
|
||||
//chamada do método HaarDetectObjects para
|
||||
//identificar as faces... de acordo com o
|
||||
//treinamento do arquivo haarcascade_frontalface_alt.xml
|
||||
//disponibilizado pelo OpenCV
|
||||
$facesIdentificadas = $i->haarDetectObjects("haarcascade_frontalface_alt.xml");
|
||||
|
||||
//joga as faces identificadas dentro do foreach
|
||||
//para que os retangulos sejam desenhados em cima
|
||||
//de x, y, largura e altura identificados na imagem
|
||||
foreach ($facesIdentificadas as $r) {
|
||||
//chama o método rectangle do OpenCV para desenhar o retangulo na face de acordo com os dados identificados
|
||||
$i->rectangle($r['x'], $r['y'], $r['width'], $r['height']);
|
||||
|
||||
//exibe na tela os valores identificados
|
||||
echo "x=".$r['x']."<br>y=". $r['y']."<br>largura=". $r['width']."<br>altura=". $r['height'];
|
||||
|
||||
//Chama função para cortar a face identificada da imagem e gravar em arquivo
|
||||
cortarFace($imagem, $r['x'], $r['y'], $r['height'], $r['width']);
|
||||
}
|
||||
|
||||
//chamada do método para salvar a imagem original com a face identificada com o retangulo azul
|
||||
$i->save($_GET["imagem"]."FaceMarcada.jpg");
|
||||
|
||||
return $i;
|
||||
}
|
||||
|
||||
//função cortar Face
|
||||
function cortarFace($imagem, $esquerda, $emCima, $direita, $emBaixo){
|
||||
|
||||
// Pega dimensões da imagem original
|
||||
list($larguraOriginal, $alturaOriginal) = getimagesize($imagem);
|
||||
|
||||
// Redefinir dimensões da imagem para colocar só a face identificada
|
||||
$canvas = imagecreatetruecolor($direita, $emBaixo);
|
||||
$imagemAtual = imagecreatefromjpeg($imagem);
|
||||
|
||||
imagecopy($canvas, $imagemAtual, 0, 0, $esquerda, $emCima, $larguraOriginal, $alturaOriginal);
|
||||
|
||||
imagejpeg($canvas, $_GET["imagem"]."FaceSelecionada.jpg", 100);
|
||||
|
||||
//TERmiNA cORTE
|
||||
}
|
||||
?>
|
||||
Arquivo binário não exibido.
+17
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
/* JPEGCam Test Script */
|
||||
/* Receives JPEG webcam submission and saves to local file. */
|
||||
/* Make sure your directory has permission to write files as your web server user! */
|
||||
|
||||
$filename = date('YmdHis') . '.jpg';
|
||||
$result = file_put_contents( $filename, file_get_contents('php://input') );
|
||||
if (!$result) {
|
||||
print "ERROR: Failed to write data to $filename, check permissions\n";
|
||||
exit();
|
||||
}
|
||||
|
||||
$url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['REQUEST_URI']) . '/' . $filename;
|
||||
print "$url\n";
|
||||
|
||||
?>
|
||||
+197
@@ -0,0 +1,197 @@
|
||||
/* JPEGCam v1.0.9 */
|
||||
/* Webcam library for capturing JPEG images and submitting to a server */
|
||||
/* Copyright (c) 2008 - 2009 Joseph Huckaby <jhuckaby@goldcartridge.com> */
|
||||
/* Licensed under the GNU Lesser Public License */
|
||||
/* http://www.gnu.org/licenses/lgpl.html */
|
||||
|
||||
/* Usage:
|
||||
<script language="JavaScript">
|
||||
document.write( webcam.get_html(320, 240) );
|
||||
webcam.set_api_url( 'test.php' );
|
||||
webcam.set_hook( 'onComplete', 'my_callback_function' );
|
||||
function my_callback_function(response) {
|
||||
alert("Success! PHP returned: " + response);
|
||||
}
|
||||
</script>
|
||||
<a href="javascript:void(webcam.snap())">Take Snapshot</a>
|
||||
*/
|
||||
|
||||
// Everything is under a 'webcam' Namespace
|
||||
window.webcam = {
|
||||
version: '1.0.9',
|
||||
|
||||
// globals
|
||||
ie: !!navigator.userAgent.match(/MSIE/),
|
||||
protocol: location.protocol.match(/https/i) ? 'https' : 'http',
|
||||
callback: null, // user callback for completed uploads
|
||||
swf_url: 'webcam.swf', // URI to webcam.swf movie (defaults to cwd)
|
||||
shutter_url: 'shutter.mp3', // URI to shutter.mp3 sound
|
||||
api_url: '', // URL to upload script
|
||||
loaded: false, // true when webcam movie finishes loading
|
||||
quality: 90, // JPEG quality (1 - 100)
|
||||
shutter_sound: true, // shutter sound effect on/off
|
||||
stealth: false, // stealth mode (do not freeze image upon capture)
|
||||
hooks: {
|
||||
onLoad: null,
|
||||
onComplete: null,
|
||||
onError: null
|
||||
}, // callback hook functions
|
||||
|
||||
set_hook: function(name, callback) {
|
||||
// set callback hook
|
||||
// supported hooks: onLoad, onComplete, onError
|
||||
if (typeof(this.hooks[name]) == 'undefined')
|
||||
return alert("Hook type not supported: " + name);
|
||||
|
||||
this.hooks[name] = callback;
|
||||
},
|
||||
|
||||
fire_hook: function(name, value) {
|
||||
// fire hook callback, passing optional value to it
|
||||
if (this.hooks[name]) {
|
||||
if (typeof(this.hooks[name]) == 'function') {
|
||||
// callback is function reference, call directly
|
||||
this.hooks[name](value);
|
||||
}
|
||||
else if (typeof(this.hooks[name]) == 'array') {
|
||||
// callback is PHP-style object instance method
|
||||
this.hooks[name][0][this.hooks[name][1]](value);
|
||||
}
|
||||
else if (window[this.hooks[name]]) {
|
||||
// callback is global function name
|
||||
window[ this.hooks[name] ](value);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false; // no hook defined
|
||||
},
|
||||
|
||||
set_api_url: function(url) {
|
||||
// set location of upload API script
|
||||
this.api_url = url;
|
||||
},
|
||||
|
||||
set_swf_url: function(url) {
|
||||
// set location of SWF movie (defaults to webcam.swf in cwd)
|
||||
this.swf_url = url;
|
||||
},
|
||||
|
||||
get_html: function(width, height, server_width, server_height) {
|
||||
// Return HTML for embedding webcam capture movie
|
||||
// Specify pixel width and height (640x480, 320x240, etc.)
|
||||
// Server width and height are optional, and default to movie width/height
|
||||
if (!server_width) server_width = width;
|
||||
if (!server_height) server_height = height;
|
||||
|
||||
var html = '';
|
||||
var flashvars = 'shutter_enabled=' + (this.shutter_sound ? 1 : 0) +
|
||||
'&shutter_url=' + escape(this.shutter_url) +
|
||||
'&width=' + width +
|
||||
'&height=' + height +
|
||||
'&server_width=' + server_width +
|
||||
'&server_height=' + server_height;
|
||||
|
||||
if (this.ie) {
|
||||
html += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="'+this.protocol+'://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="'+width+'" height="'+height+'" id="webcam_movie" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+this.swf_url+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+flashvars+'"/></object>';
|
||||
}
|
||||
else {
|
||||
html += '<embed id="webcam_movie" src="'+this.swf_url+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="webcam_movie" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+flashvars+'" />';
|
||||
}
|
||||
|
||||
this.loaded = false;
|
||||
return html;
|
||||
},
|
||||
|
||||
get_movie: function() {
|
||||
// get reference to movie object/embed in DOM
|
||||
if (!this.loaded) return alert("ERROR: Movie is not loaded yet");
|
||||
var movie = document.getElementById('webcam_movie');
|
||||
if (!movie) alert("ERROR: Cannot locate movie 'webcam_movie' in DOM");
|
||||
return movie;
|
||||
},
|
||||
|
||||
set_stealth: function(stealth) {
|
||||
// set or disable stealth mode
|
||||
this.stealth = stealth;
|
||||
},
|
||||
|
||||
snap: function(url, callback, stealth) {
|
||||
// take snapshot and send to server
|
||||
// specify fully-qualified URL to server API script
|
||||
// and callback function (string or function object)
|
||||
if (callback) this.set_hook('onComplete', callback);
|
||||
if (url) this.set_api_url(url);
|
||||
if (typeof(stealth) != 'undefined') this.set_stealth( stealth );
|
||||
|
||||
this.get_movie()._snap( this.api_url, this.quality, this.shutter_sound ? 1 : 0, this.stealth ? 1 : 0 );
|
||||
},
|
||||
|
||||
freeze: function() {
|
||||
// freeze webcam image (capture but do not upload)
|
||||
this.get_movie()._snap('', this.quality, this.shutter_sound ? 1 : 0, 0 );
|
||||
},
|
||||
|
||||
upload: function(url, callback) {
|
||||
// upload image to server after taking snapshot
|
||||
// specify fully-qualified URL to server API script
|
||||
// and callback function (string or function object)
|
||||
if (callback) this.set_hook('onComplete', callback);
|
||||
if (url) this.set_api_url(url);
|
||||
|
||||
this.get_movie()._upload( this.api_url );
|
||||
},
|
||||
|
||||
reset: function() {
|
||||
// reset movie after taking snapshot
|
||||
this.get_movie()._reset();
|
||||
},
|
||||
|
||||
configure: function(panel) {
|
||||
// open flash configuration panel -- specify tab name:
|
||||
// "camera", "privacy", "default", "localStorage", "microphone", "settingsManager"
|
||||
if (!panel) panel = "camera";
|
||||
this.get_movie()._configure(panel);
|
||||
},
|
||||
|
||||
set_quality: function(new_quality) {
|
||||
// set the JPEG quality (1 - 100)
|
||||
// default is 90
|
||||
this.quality = new_quality;
|
||||
},
|
||||
|
||||
set_shutter_sound: function(enabled, url) {
|
||||
// enable or disable the shutter sound effect
|
||||
// defaults to enabled
|
||||
this.shutter_sound = enabled;
|
||||
this.shutter_url = url ? url : 'shutter.mp3';
|
||||
},
|
||||
|
||||
flash_notify: function(type, msg) {
|
||||
// receive notification from flash about event
|
||||
switch (type) {
|
||||
case 'flashLoadComplete':
|
||||
// movie loaded successfully
|
||||
this.loaded = true;
|
||||
this.fire_hook('onLoad');
|
||||
break;
|
||||
|
||||
case 'error':
|
||||
// HTTP POST error most likely
|
||||
if (!this.fire_hook('onError', msg)) {
|
||||
alert("JPEGCam Flash Error: " + msg);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'success':
|
||||
// upload complete, execute user callback function
|
||||
// and pass raw API script results to function
|
||||
this.fire_hook('onComplete', msg.toString());
|
||||
break;
|
||||
|
||||
default:
|
||||
// catch-all, just in case
|
||||
alert("jpegcam flash_notify: " + type + ": " + msg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
Arquivo binário não exibido.
Referência em uma Nova Issue
Bloquear um usuário