<?php
//HEADER Pour savoir que c'est une image JPG
header("Content-type: image/jpeg");

//Les variables GET
  $image       = isset ($_GET['image'])       ? $_GET['image']               : '';         //nom de l'image.
  $folder      = isset ($_GET['folder'])      ? $_GET['folder']              : '';         //chemin de l'image.
  $width       = isset ($_GET['width'])       ? $_GET['width']               : 150;        //largeur de la vignette à retourner. Défaut : 150.
  $height      = isset ($_GET['height'])      ? $_GET['height']              : 100;         //hauteur de la vignette à retourner. Défaut : 100.	MR
  $bigwidth    = isset ($_GET['bigwidth'])    ? $_GET['bigwidth']            : 800;        //largeur de la photo à retourner. Défaut : 800.		MR
  $bigheight   = isset ($_GET['bigheight'])   ? $_GET['bigheight']           : 500;        //hauteur de la photo à retourner. Défaut : 500.		MR
  $save        = isset ($_GET['save'])        ? $_GET['save']                : 0;          //s'il faut(1) ou non(0) sauver la vignette.
  $bordercolor = isset ($_GET['bordercolor']) ? hexdec($_GET['bordercolor']) : 0x00AAAAAA; //la couleur du cadre. Gris par défaut.
  $bgcolor     = isset ($_GET['bgcolor'])     ? hexdec($_GET['bgcolor'])     : 0x00FFFFFF; //la couleur du cadre. Blanc par défaut.
   
//Fin variables GET

$vignet 	= $folder . '/vignets/' . $image ; 		//Dossier ou est sauvée la vignette
$StdShow    = $folder . '/StdShow/' . $image ; 		//Dossier ou est sauvée l'image standardisée

// Création des dossiers de sauvegarde des vignettes et des images standardisées.
 if (!is_dir($folder . '/vignets/'))
    {
		mkdir($folder . '/vignets/');
	}

 if (!is_dir($folder . '/StdShow/'))
    {
		mkdir($folder . '/StdShow/');
		//	echo "Create ".$folder. '/StdShow/' ;
	}	
	

//Recherche si l'image existe déjà dans le dossier vignets on la retorne au navigateur
  if (file_exists($vignet))
	  {							// La vignette existe déjà.
	   $retour = imagecreatefromJPEG($vignet);
	   imageJPEG($retour);
	   die();
	  }
//Fin de Recherche
/*echo "Vignette non trouvée".$vignet."***<br>";*/
// La vignette n'existe pas on va la crée ainsi que son format standard

//Récup de l'image d'origine et de sa taille (formats reconnus : jpg et png)
  $img_big = @imagecreatefromJPEG($folder . '/' . $image);
  if (!$img_big)
  {
   $img_big = @imagecreatefromPNG($folder . '/' . $image);
   	   if (!$img_big)
	   {
		//Pas d'image ou format inconnu ==> renvoie une image noimage.jpg
		  $retour = @imagecreatefromJPEG('Images/noimage.jpg');
		  imageJPEG($retour);
		//Fin pas d'image
	   }
  }
  $size = getimagesize($folder . '/' .$image);
//Fin Récup de l'image d'origine

//********************************************************   
//		Construction de l'image standardisée			//
//******************************************************** 	

	$x = $size[0] ;		// largeur
	$y = $size[1] ; 	// hauteur
	
	//On ajuste les dimensions finales d'affichage de l'image
	if ( $y > $bigheight)		// Ajustement de la hauteur en priorité : pour tenir dans la page en hauteur
		   { 	 // Ajustement à la hauteur max
			   $yf = $bigheight ;
			   $xf =  floor( $x * $yf/$y ) ;
		   } else{	// On conserve les valeurs d'origine et l'on va tester la largeur
			   $xf = $x ;
			   $yf = $y ;
		  }	
			  
	// Ajustement à la largeur max
	if ( $xf > $bigwidth) 	// Ajustement à la largeur max
		  {
			  $xff  = $bigwidth ;
			  $yff  = floor($yf * $xff/$xf) ;
			  // Pour être cohérent dans la suite
			  $xf = $xff ;
			  $yf = $yff ;
		  }	 	 

	  //on redimentionne l'image et on l'encadre 
	  $retour = imagecreatetruecolor($xf, $yf);	// MR introduction de height de la vignette 
	  imagefill($retour, 0, 0, $bgcolor);
	  imagecopyresized($retour, $img_big, 1 , 1 , 0, 0, $xf, $yf, $x, $y);

	  // On trace un cadre autour de l'image
	  imagerectangle($retour, 12, 12, $xf - 12, $yf - 12, "0x00");		// MR Cadre noir
	  imagerectangle($retour, 13, 13, $xf - 13, $yf - 13, "0x00");		// MR Cadre noir
	  imagerectangle($retour, 8, 8, $xf - 8, $yf - 8, $bordercolor);
	  imagerectangle($retour, 9, 9, $xf - 9, $yf - 9, $bordercolor);
	  imagerectangle($retour, 4, 4, $xf - 4, $yf - 4, "0x0CFF");			// MR
	  imagerectangle($retour, 5, 5, $xf - 5, $yf - 5, "0x0CFF");			// MR

	  imageJPEG($retour,$StdShow);				// MR On sauve la nouvelle image modifiée dans un dossier : StdShow
	

//********************************************************   
//		Construction de la vignette de l'image			//
//******************************************************** 	

//on calcule les dimentions de l'image redimentionnée  : largeur = x et hauteur = x * le rapport hauteur largeur,
//                                                  ou : largeur = x et hauteur = x * le rapport hauteur largeur,
//                                                  en fonction du ratio entre les dimensions.
  $ratio = $size[1] / $size[0]; 	//Rapport hauteur-largeur 

  if ($ratio < 1) //x > y
	  {
	   $x = $width - 2;				// largeur
	   $y = floor($x * $ratio); 	// hauteur arrondie à l'entier inférieur 
	  }
  else            //y > x
	  {
	   $y = $width - 2;
	   $x = floor(1 / $ratio * $y);
	  }
  
  //on redimentionne l'image en width x width (par défaut 150 x 150) et on l'encadre en gris
    $retour = imagecreatetruecolor($width, $height);	// MRintroduction de height de la vignette 
	imagefill($retour, 0, 0, $bgcolor);
    imagecopyresized($retour, $img_big, floor(($width - $x) / 2), floor(($height - $y) / 2), 0, 0, $x, $y, $size[0], $size[1]);
    imagerectangle($retour, 0, 0, $width - 1, $height - 1, $bordercolor);
  
//on sauve la vignette et on l'envoie au navigateur
	imageJPEG($retour, $vignet);
    /* imageJPEG($retour);*/
?>