File "000index.php"
Full Path: /home/analogde/www/Android/Traitement/000index.php
File size: 6.41 KB
MIME-type: text/x-php
Charset: 8 bit
<?php
$action = $_POST['action'];
//fonction pour le calcul du temps d'affichage
function getmicrotime(){
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
$debut = getmicrotime();
//generateur de chaine de caractere aleatoire, servant a l'attibution des nom des images
function alea_string($caract_max = "10"){
$chaine="";
$caract = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
for ($i=0; $i < $caract_max; $i++) $chaine .= $caract[rand(0, count($caract)-1)];
return $chaine;
}
// fonction de comparaison
function comparaison_img($img1, $img2){
$im1 = ImageCreateFromPng($img1);
list($width_img1,$height_img1) = getimagesize($img1);
$im2 = ImageCreateFromPng($img2);
list($width_img2,$height_img2) = getimagesize($img2);
$width = ($width_img1 > $width_img2)?$width_img1:$width_img2;
$height = ($height_img1 > $height_img2)?$height_img1:$height_img2;
$image_resultat_1 = imagecreatetruecolor($width,$height);
$image_resultat_2 = imagecreatetruecolor($width,$height);
$diff_totales = 0;
for ($x=0;$x<$width;$x++) {
for ($y=0;$y<$height;$y++) {
$rgb_img1 = ImageColorAt($im1, $x, $y);
$r_img1 = ($rgb_img1 >> "16") & 0xFF;
$g_img1 = ($rgb_img1 >> "8") & 0xFF;
$b_img1 = $rgb_img1 & 0xFF;
$rgb_img2 = ImageColorAt($im2, $x, $y);
$r_img2 = ($rgb_img2 >> "16") & 0xFF;
$g_img2 = ($rgb_img2 >> "8") & 0xFF;
$b_img2 = $rgb_img2 & 0xFF;
$r = 255 - abs($r_img1 - $r_img2) ;
$g = 255 - abs($g_img1 - $g_img2) ;
$b = 255 - abs($b_img1 - $b_img2) ;
//resultat 1 : image par gradiant
$color_resultat_1 = imagecolorallocate($image_resultat_1,$r,$g,$b);
imagesetpixel($image_resultat_1, $x, $y, $color_resultat_1);
//resultat 2 : image N/B des diffrences
if($r_img1 != $r_img2 or $g_img1 != $g_img2 or $b_img1 != $b_img2) {
$color_resultat_2 = imagecolorallocate($image_resultat_2, "0", "0", "0");
$diff_totales++;
}else $color_resultat_2 = imagecolorallocate($image_resultat_2, "255", "255", "255");
imagesetpixel($image_resultat_2, $x, $y, $color_resultat_2);
}
}
// gnration d'un nom pour les images de resultat
$nom_img_resultat = alea_string();
//repertoir de stockage des images de resultat:
$rep_img_result = "images/";
imagepng($image_resultat_1, $rep_img_result . $nom_img_resultat.'_1.png');
imagepng($image_resultat_2, $rep_img_result . $nom_img_resultat.'_2.png');
$return = array(
"resultat_1" => $rep_img_result . $nom_img_resultat.'_1.png',
"resultat_2" => $rep_img_result . $nom_img_resultat.'_2.png',
"diff" => $diff_totales
);
return $return;
}
switch ($action){
case "upload":
// Repertoire cible
$target = "upload/";
// Taille max en octets du fichier
$max_size = "1000000";
// Largeur max de l'image en pixels
$width_max = "200";
// Hauteur max de l'image en pixels
$height_max = "200";
$extensions_ok = array("jpg","gif","png","jpeg");
$error_1 = 0;
$error_2 = 0;
$nom_fichier_enregister = alea_string();
for($nb_img = 1; $nb_img <= 2; $nb_img++){
${'nom_file_' . $nb_img} = $_FILES['image_'.$nb_img]['name'];
${'taille_' . $nb_img} = $_FILES['image_'.$nb_img]['size'];
${'tmp_' . $nb_img} = $_FILES['image_'.$nb_img]['tmp_name'];
${'chemin_' . $nb_img} = $target.$nom_fichier_enregister.'_'.$nb_img;
$extension = substr(${'nom_file_' . $nb_img},-3);
if(${'nom_file_' . $nb_img})
{
if(in_array(strtolower($extension),$extensions_ok))
{
$infos_img = getimagesize(${'tmp_' . $nb_img} );
if(($infos_img[0] <= $width_max) && ($infos_img[1] <= $height_max) && (${'taille_' . $nb_img} <= $max_size))
{
if(move_uploaded_file(${'tmp_' . $nb_img},${'chemin_' . $nb_img}))
{
echo '<p>Image '.$nb_img.' uploade avec succs !</p>';
echo '<ul><li>Fichier : '.${'nom_file_' . $nb_img}.'</li>';
echo '<li>Taille : '.${'taille_' . $nb_img}.' Octets</li>';
echo '<li>Largeur : '.$infos_img['0'].' px</li>';
echo '<li>Hauteur : '.$infos_img['1'].' px</li></ul>';
} else {
echo '<p>Problme lors de l\'upload de l\'image '.$nb_img.' !</p>';
${'error'.$nb_img} = 1;
}
} else {
echo '<p>Erreur dans les dimensions ou taille de l\'image '.$nb_img.'!</p>';
${'error'.$nb_img} = 1;
}
}else {
echo '<p>Votre image '.$nb_img.' ne comporte pas une extension valide !</p>';
${'error'.$nb_img} = 1;
}
} else {
echo '<p>Le champ du formulaire de l\image '.$nb_img.' est vide !</p>';
${'error'.$nb_img} = 1;
}
}
if ($error_1 == 0 && $error_2 == 0) echo "<br /><form action=\"". $PHP_SELF ."\" method=\"post\" name=\"comparer\"><input name=\"action\" type=\"hidden\" value=\"compare\"><input name=\"img1\" type=\"hidden\" value=\"".$nom_file_1."\"><input name=\"img2\" type=\"hidden\" value=\"".$nom_file_2."\"><input name=\"\" type=\"submit\" value=\"Comparer les deux images\"></form><br />";
else echo "<br /><form action=\"". $PHP_SELF ."\" method=\"post\" name=\"error\"><input name=\"\" type=\"submit\" value=\"Une erreur est survenu durant le traitement d'une des images. Veuillez recommencer\"></form><br />";
break;
case "compare":
$comparaison_img1_img2 = comparaison_img($_POST['img1'], $_POST['img2']);
echo "<p>
Image d'origine 1 : <br />
<img src=\"".$_POST['img1']."\" /><br />
</p>
<hr>
<p>
Image d'origine 2 : <br />
<img src=\"".$_POST['img2']."\" /><br /><br />
</p>
<p>
<h3>Rsultat d'analyse</h3>
<fieldset><legend>Resultat 1: Image par gradients de difference</legend>
<img src=\"".$comparaison_img1_img2['resultat_1']."\" />
</fieldset>
<fieldset><legend>Resultat 2: Image Noir et Blanc des diffrences</legend>
<img src=\"".$comparaison_img1_img2['resultat_2']."\"/>
</fieldset>
<br />
Diffrences comptabilise: ".$comparaison_img1_img2['diff']."
</p>";
break;
default:
echo "<form enctype=\"multipart/form-data\" action=\"". $PHP_SELF ."\" method=\"POST\">
<input type=\"hidden\" name=\"action\" value=\"upload\">
<p>Envoyer l'image 1 :</p>
<input name=\"image_1\" type=\"file\">
<p>Envoyer l'image 2 :</p>
<input name=\"image_2\" type=\"file\"><br />
<input type=\"submit\" value=\"Uploader\">
</form>";
}
echo "<div align=\"center\">Page gnre en ".round( getmicrotime() - $debut, 3) ." secondes</div>";
?>