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 ?
Veuillez laisser ce champ vide :
Votre nom
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
1000 Francs de récompense
Htc Touch , SIP , Freephonie
Pourquoi travailler en SCOP
Quel héro de série suis je ?
Thumbnails
divers
Présentation ABF avril 2009
Snip’heure, Le printemps
Débat sur l’euthanasie
Aimons les maths
informatique
Debian : Migration i386 vers amd64
Navigateur et personnalisation IP/domaine
Migrer vers un nouveau disque SSD
SNMPD, unknown payload OID et defaultMonitors
Conversion massive d’un jeu de caractéres à un autre
Le service de profil utilisateur n’a pas pu ouvrir de session
Sed et 2/3 astuces
Exporter ses factures dolibarr en pdf et odt
Remplacer un disque raid logiciel (mdam)
Wordpress et les attaques brute force
Redmine avec Thin
Amorcer ses DomU avec son propre noyau (pyGrub)
Installer E-venemement 2.x
Monter un partage samba anonyme
Webacula ou gérer ses sauvegardes Bacula
Ranger son parc informatique
Migrer de ejabberd vers prosody
Sauvegarder sur bandes ses machines virtuelles
Proxy jabber sur HTTP (http-bind et BOSH)
Ubuntu, Kernel , nvidia (2.6.30)
Réplication Mysql ou comment sauvegarder ses bases de données
Utiliser Virt-manager avec Xen
Giggle : Client pour GIT
Réparation Mysql en masse
Migrer un dépot SVN
Screen + ssh que du bonheur
PW2008 - conclusion
PW2008 : Vendredi
PW2008 : Jeudi
Modifier un log de commit (Subversion)
Failed to connect to MSN servers (pymsnt)
Spip aux RMLL 2008
Php4 : le mamouth indétronable
Installer un serveur jabber
Serveur@home : un bel oeuf de pâques
Les outils du webmaster
RMLL - samedi 14
RMLL - vendredi 13 (1/2)
RMLL - vendredi 13 (2/2)
RMLL - vendredi 13 (2/2)
RMLL - jeudi 12 (2/2)
RMLL - jeudi 12 (1/2)
Générer un flux RSS à partir d’une liste de définition
Transferer / Sauvegarder ses données
Alternc
Monitorer Alternc grâce à munin
Sauvergarder son serveur
Regenerer les zones DNS avec alternc
ssh et mot de passe
sasl rimap
Débusquer le AllowOverride
Opéra / DragonFly
Alpha 3
Smushit : Nous aussi on peut vérifier nos images
Firebug vs DragonFly
Suivre les mises à jour de DragonFly
Firebug à la sauce Opera : Dragon Fly
php
SPIP
SPIP2 Faire part de naissance
Les immédiatiques (Brest 2008)
SPIP Média (Bruxelles)
SPIP 2 RC1
Tiens un écureil
Travail Collaboratif
[2024] Redmine et plugins à surveiller
[2024] Redmine et ses plugins
Avoir plusieurs comptes Skype
Subgit ou la cohabitation heureuse de SVN et Git
Optimiser Trac
Créer un démon Subversion
Conférence sur les logiciels libre
Installer LDAP
Carnet d’adresses partagé : Quelle solution ?
Gosa
Gosa : Utilisation de Samba
Gosa : Authentification Unix (compte posix)
Installer Gosa (partie 2 : Gosa)
Installer Gosa (partie 1 : Ldap)
Téléphonie