km.azerttyu.net
Accueil
>
Du km au texte
>
Thumbnails
Thumbnails
<?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 if (substr_count($_GET['file'], "http://",0)) { $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 if (!file_exists($thumb['source']['full_name'])) { echo $thumb['source']['full_name']; echo "Le fichier source n'existe pas"; exit; } //teste l'existence du chemin cible if (!is_dir($thumb['destination']['dir'])) { @mkdir($thumb['destination']['dir']); } //affiche directement la vignette si elle existe if (file_exists($thumb['destination']['full_name'])) { 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']); } exit; } //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 $thumb['source']['image'] = ImageCreateFromJPEG($thumb['source']['full_name']); break; case 3: // Png $thumb['source']['image'] = ImageCreateFromPng($thumb['source']['full_name']); break; default : echo "Le fichier cible ne peut \u00eare cr\u00e9er"; exit; 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'] ); */ imagecopyresampled( $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']); imagecopyresized( $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']; $white = imagecolorallocate ($thumb['destination']['image'], 255, 255, 255); $black = imagecolorallocate ($thumb['destination']['image'], 0, 0, 0); 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 imagedestroy ($thumb['source']['image']); imagedestroy ($thumb['destination']['image']); ?>
Un message, un commentaire ?
Qui êtes-vous ?
Votre nom
Veuillez laisser ce champ vide :
Votre adresse email
Votre message
Titre (obligatoire)
Texte de votre message (obligatoire)
Pour créer des paragraphes, laissez simplement des lignes vides.
Veuillez laisser ce champ vide :
Menu
Accueil
Du km au texte
Htc Touch , SIP , Freephonie
Pourquoi travailler en SCOP
Quel héro de série suis je ?
Thumbnails
1000 Francs de récompense
divers
Aimons les maths
Débat sur l’euthanasie
GPG
Présentation ABF avril 2009
Snip’heure, Le printemps
informatique
RMLL - jeudi 12 (1/2)
Amorcer ses DomU avec son propre noyau (pyGrub)
Conversion massive d’un jeu de caractéres à un autre
Exporter ses factures dolibarr en pdf et odt
Failed to connect to MSN servers (pymsnt)
Générer un flux RSS à partir d’une liste de définition
Giggle : Client pour GIT
Installer E-venemement 2.x
Installer un serveur jabber
Le service de profil utilisateur n’a pas pu ouvrir de session
Les outils du webmaster
Migrer de ejabberd vers prosody
Migrer un dépot SVN
Migrer vers un nouveau disque SSD
Modifier un log de commit (Subversion)
Monter un partage samba anonyme
Navigateur et personnalisation IP/domaine
Php4 : le mamouth indétronable
Proxy jabber sur HTTP (http-bind et BOSH)
PW2008 - conclusion
PW2008 : Jeudi
PW2008 : Vendredi
Ranger son parc informatique
Redmine avec Thin
Remplacer un disque raid logiciel (mdam)
Réparation Mysql en masse
Réplication Mysql ou comment sauvegarder ses bases de données
RMLL - jeudi 12 (2/2)
RMLL - samedi 14
RMLL - vendredi 13 (1/2)
RMLL - vendredi 13 (2/2)
RMLL - vendredi 13 (2/2)
Sauvegarder sur bandes ses machines virtuelles
Screen + ssh que du bonheur
Sed et 2/3 astuces
Serveur@home : un bel oeuf de pâques
SNMPD, unknown payload OID et defaultMonitors
Spip aux RMLL 2008
Transferer / Sauvegarder ses données
Ubuntu, Kernel , nvidia (2.6.30)
Utiliser Virt-manager avec Xen
Webacula ou gérer ses sauvegardes Bacula
Wordpress et les attaques brute force
Alternc
Débusquer le AllowOverride
Monitorer Alternc grâce à munin
Regenerer les zones DNS avec alternc
sasl rimap
Sauvergarder son serveur
ssh et mot de passe
Opéra / DragonFly
Alpha 3
Firebug à la sauce Opera : Dragon Fly
Firebug vs DragonFly
Smushit : Nous aussi on peut vérifier nos images
Suivre les mises à jour de DragonFly
php
SPIP
Les immédiatiques (Brest 2008)
SPIP 2 RC1
SPIP Média (Bruxelles)
SPIP2 Faire part de naissance
Tiens un écureil
Travail Collaboratif
Avoir plusieurs comptes Skype
Carnet d’adresses partagé : Quelle solution ?
Conférence sur les logiciels libre
Créer un démon Subversion
Installer LDAP
Optimiser Trac
Subgit ou la cohabitation heureuse de SVN et Git
Gosa
Gosa : Authentification Unix (compte posix)
Gosa : Utilisation de Samba
Installer Gosa (partie 1 : Ldap)
Installer Gosa (partie 2 : Gosa)
Téléphonie