<?php
/*******************************************************************************
*
*Thumb.php
*Fonction :
* Propose la g\u00e9n\u00e9ration \u00e0 la vol\u00e9e d'une vignette \u00e0 partir d'un jpeg
* La vignette est sauvegard\u00e9e dans un sous repertoire de l'image source.
*Necessite :
* GD 2
*
*Adapt\u00e9 de :
* Thumb.php de Chris Tomlinson. ctomlinson@westnet.com.au
* http://mightystuff.net
*
*Version :
* 0.1 : 2006/06/04 - Mise en place du code
* 0.2 : 2006/06/05 - Contr\u00f4le l'existence du repertoire cible
*
*Attributs :
*$_GET['file'] = Chemin de l'image \u00c3 r\u00e9duire
*$_GET['largeur'] = largeur maximale de l'image
*$_GET['hauteur'] = largeur maximale de l'image
*$_GET['nochache'] = supprime la vignette
* (0 = sauvergarder, 1=supprimer)
* -- bogue --
*$_GET['alt'] = un filigramme
* -- \u00c3 developper --
*$_GET['type'] = le type d'image cible
* (1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP,
* 7 = TIFF (Ordre des octets Intel), 8 = TIFF (Ordre des octets Motorola),
* 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF)
******************************************************************************/
// configuration
$thumb['dir'] ='thumbs/';
if (empty($_GET['largeur']) && empty($_GET['hauteur'])) {
$thumb['destination']['largeur'] = 200;
} else {
$thumb['destination']['largeur'] = $_GET['largeur'];
$thumb['destination']['hauteur'] = $_GET['hauteur'];
}
if (empty($_GET["quality"])) {
$thumb['quality'] = 80;
} else {
$thumb['quality'] = $_GET["quality"];
}
if (empty($_GET["type"])) {
$thumb['destination']['type'] = 2;
} else {
$thumb['destination']['type'] = $_GET["type"];
}
if (empty($_GET['alt'])) {
$thumb['alt']="filigramme";
} else {
$thumb['alt'] = $_GET['alt'];
}
if ($_GET['nocache'] == 1) {
$thumb['nocache'] = 1;
} else {
$thumb['nocache'] = 0;
}
//determine le chemin complet du serveur
$document_root = str_replace($_SERVER["PHP_SELF"],"",__FILE__)."/";
//determine le nom du fichier
$thumb['source']['file'] = substr(strrchr ($_GET['file'],'/'),1);
$thumb['destination']['file'] = $thumb['source']['file'];
//determine le chemin source et cible de sauvegarde
$thumb['source']['dir'] = str_replace($thumb['source']['file'],'',$_GET['file']);
$thumb['destination']['dir'] = $document_root.$thumb['dir'];
} else {
$thumb['source']['dir'] = $document_root.str_replace($thumb['source']['file'],'',$_GET['file']);
$thumb['destination']['dir'] = $thumb['source']['dir'].$thumb['dir'];
}
//memorise le chemin complet
$thumb['source']['full_name'] = $thumb['source']['dir'].$thumb['source']['file'];
$thumb['destination']['full_name'] = $thumb['destination']['dir'].$thumb['destination']['file'];
//echo "<strong>".$thumb['source']['full_name']."</strong>";
//teste l'existence du fichier source
echo $thumb['source']['full_name'];
echo "Le fichier source n'existe pas";
}
//teste l'existence du chemin cible
if (!is_dir($thumb['destination']['dir'])) {
@mkdir($thumb['destination']['dir']);
}
//affiche directement la vignette si elle existe
Header('Content-type: image/jpeg');
Header("Expires: Mon, 26 Jul 2030 05:00:00 GMT");
Header('Content-Disposition: inline; filename='.$thumb['destination']['full_name']);
echo (join('', file($thumb['destination']['full_name'])));
//supprime la vignette si necessaire
if ($thumb['nocache']==1) {
@unlink($thumb['destination']['full_name']);
}
}
//determine le type d'image source
$info_source = getimagesize($thumb['source']['dir'].$thumb['source']['file']);
$thumb['source']['largeur'] = $info_source[0];
$thumb['source']['hauteur'] = $info_source[1];
$thumb['source']['type'] = $info_source[2];
/*
echo $thumb['destination']['full_name']."<br/>";
echo $thumb['source']['full_name']."<br/>";
echo $thumb['source']['type']."<br/>";
echo "++".$thumb['source']['largeur']."--".$thumb['source']['hauteur']."<br/>";
echo "--".$thumb['destination']['largeur']."--".$thumb['destination']['hauteur']."<br/>";
*/
//g\u00c3\u00a9n\u00c3\u00a9re la vignette
switch ($thumb['source']['type']) {
case 2: // JPG
break;
case 3: // Png
break;
default :
echo "Le fichier cible ne peut \u00eare cr\u00e9er";
break;
}
//d\u00c3\u00a9fini les dimension de la vignette
if (empty($thumb['destination']['hauteur'])){
$thumb['destination']['hauteur'] = $thumb['destination']['largeur'] /$thumb['source']['largeur'] * $thumb['source']['hauteur'];
}
//retaille l'image
if ($thumb['source']['largeur']<2000) {
$thumb['destination']['image'] = ImageCreateTrueColor($thumb['destination']['largeur'], $thumb['destination']['hauteur']);
/*
imagecopyresized(
$thumb['destination']['image'], $thumb['source']['image'],
0, 0, 0, 0,
$thumb['destination']['largeur'], $thumb['destination']['hauteur'], $thumb['source']['largeur'], $thumb['source']['hauteur']
);
*/
$thumb['destination']['image'], $thumb['source']['image'],
0, 0, 0, 0,
$thumb['destination']['largeur'], $thumb['destination']['hauteur'], $thumb['source']['largeur'], $thumb['source']['hauteur']
);
} else {
$thumb['destination']['image'] = ImageCreateTrueColor($thumb['destination']['largeur'], $thumb['destination']['hauteur']);
$thumb['destination']['image'],
$thumb['source']['image'],
0, 0, 0, 0,
$thumb['destination']['largeur'],
$thumb['destination']['hauteur'],
$thumb['source']['largeur'],
$thumb['source']['hauteur']
);
}
//ajoute un commentaire sur la vignette
if (!empty($thumb['alt'])) {
$font=51;
$string= $thumb['alt'];
imagestring ($thumb['destination']['image'], $font, 3, $thumb['destination']['hauteur']-9, $string, $black);
imagestring ($thumb['destination']['image'], $font, 2, $thumb['destination']['hauteur']-10, $string, $white);
}
//g\u00c3\u00a9n\u00c3\u00a9re l'entete de fichier
Header('Content-type: image/jpeg');
Header("Expires: Mon, 26 Jul 2030 05:00:00 GMT");
Header('Content-Disposition: inline; filename='.$thumb['destination']['full_name']);
if ($thumb['destination']['type']==2){
if ($thumb['nocache']== 0) {
//sauvegarde l'image
imagejpeg($thumb['destination']['image'],$thumb['destination']['full_name'],$thumb['quality']);
}
//retourne l'image sur la sortie standard
imagejpeg($thumb['destination']['image'],'',$thumb['quality']);
}
//vide la m\u00e9oire
?>