Formation par Olivier Duffez

Formation au référencement par Olivier Duffez, créateur de WebRankInfo !
Une formule efficace alliant théorie et pratique, avec une haute disponibilité des intervenants
Cette formule a déjà convaincu plusieurs centaines d'entreprises, pourquoi pas vous ?
Réservez vite votre place en ligne (convention possible pour imputer sur le budget formation)

Formation référencement Marseille

[script] Generation d'images à la volée

Aller à la page 1, 2, 3  Suivante
Poster un nouveau sujet Imprimer cette discussion    Forum -> Développement d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
fandecine
Modérateur
Modérateur

Inscrit le: 02 Avr 2005
Messages: 1401
Localisation: Béarn

URL permanente de ce messagePosté le : Mer Mai 18, 2005 16:53    Sujet du message: [script] Generation d'images à la volée

Comme promis dans le post http://www.webrankinfo.com/forums/viewtopic_28614.htm j'ouvre un nouveau fil pour proposer une autre astuce! (j'ai lancé l'idée en espérant être suivi, car à raison d'une astuce par jour, je porrais pas tenir six mois! Wink ) Alors webmasters, reveillez-vous! vous avez surement des codes à partager! et puis, si ça marche, ça pourrait faire l'objet d'un forum spécifique sur wri!

bon. on y vas...

ceux qui ont visité le site de mon profil ont du constater qu'il y avait beaucoups d'images de differentes tailles (affiches de films ou wallpapers)
avec plus de 8000 affiches et 2500 wallpapers en trois tailles différentes je m'ammuse pas à faire les recadrages à la main, c'est php qui fait ça, et il le fait une bonne fois pour toute et il fait cela lorsque j'iploade l'image sur le serveur.

Comme pour mon précédant fil, vous pouvez m'insulter si le truc est archi connu! Wink

Comment ça marche?

Prennons l'exemple d'une affiche de film: Elle existe sous trois format (sa taille originale, une taille reduite sur la fiche du film en 260 pixels de large, 185 pixels de haut et une miniature en 85 pixels de large un peu partout ailleurs sur le site)

le principe est de lire les caracteristiques de l'image originale avec la fonction php getimagesize(), puis de creer une image à partir de son url avec imagecreatefromjpeg(), ensuite on calcule la taille des images à générer puis on les fabrique avec le couple de fonctions imagecreatetruecolor () et
imagecopyresampled (), à la fin on renvoi un header("Content-Type: image/jpeg") pour voir le resultat.

voici le code commenté:

Code:
<?php
   $url_img=$_GET["image"];
   $conn_id = ftp_connect($ftpHost);
   $login_result = ftp_login($conn_id, $ftpLogin, $ftpPwd); // on se connecte en ftp
   @ftp_mkdir ( $conn_id, "chemin vers le repertoire 1"); // si le repertoire ou stocker l'image originale n'existe pas on le crée
   @ftp_site ($conn_id, "CHMOD 777 chemin vers le repertoire 1"); // on donne les droit d'accés à ce répertoire
   @ftp_mkdir ( $conn_id, "chemin vers le repertoire 2"); // idem pour le repertoire ou on veut stocker le format 85px
   @ftp_site ($conn_id, "CHMOD 777 chemin vers le repertoire 2");
   @ftp_mkdir ( $conn_id, "chemin vers le repertoire 3");// idem pour le repertoire ou on veut stocker le format 190px par 260
   @ftp_site ($conn_id, "CHMOD 777 chemin vers le repertoire 3");
   list($imx, $imy, $type, $attr) = getimagesize($url_img); //lecture des caracteristiques de l'image à traiter
   $ims=imagecreatefromjpeg ($url_img); // création de l'image en mémoire à partir de son url
   imagejpeg($ims,"nom de l'image jpeg",80);// on stocke l'image originale avec un facteur qualité de 80%
   $ratiox=$imx/190; // on calcule le rapport de réduction en  x
   $ratioy=$imy/260;// on calcule le rapport de réduction en  y
   if($ratiox>$ratioy) { // comme on veut pas déformer l'image, on fait un test pour qu'elle s'incrive dans le rectangle 185x260
      $imd=imagecreatetruecolor (floor($imx/$ratiox),floor($imy/$ratiox));// on fabrique l'image
      imagecopyresampled ($imd,$ims,0,0,0,0, floor($imx/$ratiox),floor($imy/$ratiox),$imx,$imy);// on la stocke
   } else {
      $imd=imagecreatetruecolor (floor($imx/$ratioy),floor($imy/$ratioy));// on fabrique l'image
      imagecopyresampled ($imd,$ims,0,0,0,0, floor($imx/$ratioy),floor($imy/$ratioy),$imx,$imy);// on la stocke
   }
   // on refait la même opération pour l'mage miniature
   imagejpeg($imd,"nom de l'image jpeg",80);
   imagedestroy($imd);// on detruit la ressource image qui n'est plus utile
   $ratiox=$imx/85;
   $imd=imagecreatetruecolor (floor($imx/$ratiox),110);
   imagecopyresampled ($imd,$ims,0,0,0,0, floor($imx/$ratiox),floor($imy/$ratiox),$imx,$imy);
   imagejpeg($imd,"nom de l'image jpeg",80);
   imagedestroy($ims);// on detruit la ressource image qui n'est plus utile
   @ftp_site ($conn_id, "CHMOD 755 chemin vers le repertoire 1"); // on protege à nouveau l'accés au repertoire 1
   @ftp_site ($conn_id, "CHMOD 755 chemin vers le repertoire 2"); // on protege à nouveau l'accés au repertoire 21
   @ftp_site ($conn_id, "CHMOD 755 chemin vers le repertoire 3"); // on protege à nouveau l'accés au repertoire 3
   ftp_quit($conn_id); // on ferme la session ftp
   header("Content-Type: image/jpeg"); // on crée une entête image jpg
   imagejpeg ($imd); // on retourne l'image miniature
   imagedestroy($imd); // on detruit la ressource image qui n'est plus utile
?>


dans la page appelant le script on met:

Code:
<img src="nomduscript.php?image=url de l'image à traiter">


Attention! ce genre de script consomme pas mal de ressources mémoire (c'est pour cela que je le lance lorsque j'uploade de nouvelle images) Il peut être nécessaire selon la taille de l'image d'allouer plus de mémoire au script en ajoutant dans le .htaccess:
Code:
php_value memory_limit 64M


voilà! c'est tout.
 
fandecine Visiter le site web du posteur
gorgu
WRInaute impliqué
WRInaute impliqué

Inscrit le: 23 Mar 2005
Messages: 347

URL permanente de ce messagePosté le : Mer Mai 18, 2005 17:00    Sujet du message: [script] Generation d'images à la volée

tu pourrais verifier l'existance de l'image afin de ne faire ce redimentionnement qu'une seule fois. je vais chercher le bout de script et je le mets ici
 
gorgu Visiter le site web du posteur
gorgu
WRInaute impliqué
WRInaute impliqué

Inscrit le: 23 Mar 2005
Messages: 347

URL permanente de ce messagePosté le : Mer Mai 18, 2005 17:04    Sujet du message: [script] Generation d'images à la volée

bon on va dire que tu as un repertoire taille1 taille2 taille3

en debut de fichier
<?
if (file_exists("taille1/$image")
{
header( "location: taille1/l$image");
}
else
{

ton fichier
avec à la fin

imagejpeg ($imd,"taille1/$image");
imagejpeg ($imd);
ImageDestroy ($imd);
?>
 
gorgu Visiter le site web du posteur
fandecine
Modérateur
Modérateur

Inscrit le: 02 Avr 2005
Messages: 1401
Localisation: Béarn

URL permanente de ce messagePosté le : Mer Mai 18, 2005 17:24    Sujet du message: [script] Generation d'images à la volée

d'accord avec toi, mais telle que je le présente ce script est à inclure dans un back office (outils de mise à jour de site) et nom pas sur le site lui même (d'ailleur sur le mien, avec la mise en cache des pages php ça marcherais pas de faire un file_exists()!) Et dans la cas d'un back office, l'image étant nouvelle, tu est sur qu'elle n'existe pas déjà, qlqsoit le format.
 
fandecine Visiter le site web du posteur
dreamclic
WRInaute impliqué
WRInaute impliqué

Inscrit le: 03 Juil 2004
Messages: 411
Localisation: Bordeaux

URL permanente de ce messagePosté le : Jeu Mai 19, 2005 0:38    Sujet du message: [script] Generation d'images à la volée

le problème, c'est que si tu décides de changer la taille d'affichage sur ton site, t'as tout à refaire.

Nous, on upload l'image originale et on stocke le fichier généré au premier affichage.

C'est ce fichier qu'appelle le script directement s'il existe déjà
 
dreamclic Visiter le site web du posteur
caro
WRInaute passionné
WRInaute passionné

Inscrit le: 21 Juil 2003
Messages: 872

URL permanente de ce messagePosté le : Jeu Mai 19, 2005 14:25    Sujet du message: [script] Generation d'images à la volée

fandecine je suis fan de toi Very Happy
merci pour ce nouveau script, si tout le monde prenait le temps de partager comme toi, je t'explique pas les progressions qu'on ferait.
encore merci Wink
carole
 
caro
e-kiwi
Modérateur
Modérateur

Inscrit le: 23 Déc 2003
Messages: 12073
Localisation: Toulouse

URL permanente de ce messagePosté le : Jeu Mai 19, 2005 14:26    Sujet du message: [script] Generation d'images à la volée

lol ca s'appelle l'open source ...
 
e-kiwi Visiter le site web du posteur
shrom
WRInaute passionné
WRInaute passionné

Inscrit le: 05 Juil 2004
Messages: 866

URL permanente de ce messagePosté le : Jeu Mai 19, 2005 14:47    Sujet du message: [script] Generation d'images à la volée

e-kiwi a écrit:
lol ca s'appelle l'open source ...


Mais les gens n'y sont pas encore sensibilisés, il faut continuer l'*Evangélisme*.

Prenons l'exemple de Linux. Bon ça va les webmasters savent ce que c'est. IBM nous fait un matraquage publicitaire depuis des années sur Linux et bien le commun des mortel dit ne jamais en avoir entendu parlé, les SSII clament haut et fort que c'est un truc pour bidouilleurs qu'il ne faut pas utiliser en production ...

Je commence à désespérer.
 
shrom Visiter le site web du posteur
fandecine
Modérateur
Modérateur

Inscrit le: 02 Avr 2005
Messages: 1401
Localisation: Béarn

URL permanente de ce messagePosté le : Jeu Mai 19, 2005 15:12    Sujet du message: [script] Generation d'images à la volée

caro a écrit:
fandecine je suis fan de toi


arrête carole Embarassed
 
fandecine Visiter le site web du posteur
fandecine
Modérateur
Modérateur

Inscrit le: 02 Avr 2005
Messages: 1401
Localisation: Béarn

URL permanente de ce messagePosté le : Jeu Mai 19, 2005 15:15    Sujet du message: [script] Generation d'images à la volée

dreamclic a écrit:
le problème, c'est que si tu décides de changer la taille d'affichage sur ton site, t'as tout à refaire.

Nous, on upload l'image originale et on stocke le fichier généré au premier affichage.

C'est ce fichier qu'appelle le script directement s'il existe déjà


mon problème, c'est que je met les pages en cache pour soulager le serveur. Donc si je génére l'image au premier chargement de la page, les cript sera appellé également aux chargement suivants. Donc les economies de ressources que j'obtiens avec la mise en cache sont perdues, car, question ressources, ce script en consomme pas mal (surtout de la mémoire).
 
fandecine Visiter le site web du posteur
Den-S
Nouveau WRInaute

Inscrit le: 30 Mar 2004
Messages: 14
Localisation: HYERES - VAR

URL permanente de ce messagePosté le : Lun Juin 13, 2005 11:38    Sujet du message: [script] Generation d'images à la volée

Salut,

sympa de faire partager tes scripts ! Moi j'utilise le même genre de systeme pour des images et leurs vignettes par contre j'utilise netpbm pour redimensionner les images qui donne un meilleur résultat et consomme moins de ressources apache. Par contre c'est un programme externe à php donc il faut qu'il soit installé sur le serveur.

un petit comparatif gd/netpbm : http://gallery.menalto.com/modules.php?op=modload&name=NetPbmVsGd&file=i...
 
Den-S Visiter le site web du posteur
spijoelx
WRInaute impliqué
WRInaute impliqué

Inscrit le: 06 Fév 2004
Messages: 252
Localisation: France

URL permanente de ce messagePosté le : Lun Juin 13, 2005 11:48    Sujet du message: [script] Generation d'images à la volée

Den-S a écrit:

un petit comparatif gd/netpbm : http://gallery.menalto.com/modules.php?op=modload&name=NetPbmVsGd&file=i...

Citation:
2/5/2004 Note: This page is at least two years out of date. When it was originally written, GD2 was not available. Now that GD2 is available and offers better quality image manipulation we are working on integrating it into Gallery 2.0

Razz
 
spijoelx Visiter le site web du posteur
fandecine
Modérateur
Modérateur

Inscrit le: 02 Avr 2005
Messages: 1401
Localisation: Béarn

URL permanente de ce messagePosté le : Lun Juin 13, 2005 11:49    Sujet du message: [script] Generation d'images à la volée

Oups! pas assez rapide, mais j'allais le dire! Wink
 
fandecine Visiter le site web du posteur
Tex
WRInaute impliqué
WRInaute impliqué

Inscrit le: 09 Juil 2004
Messages: 447

URL permanente de ce messagePosté le : Lun Juin 13, 2005 11:53    Sujet du message: [script] Generation d'images à la volée

perso je fait tous mes resize d'images lors de l'upload avec le script qui upload l'image originale (pas besoin de FTP), comme ça le resize est fait une bonne fois pour toutes, si un jour une nouvelle taille apparait je ferait un script pour tout resizer depuis l'original qui est également sur le serveur. (pour l'anecdote je bosse aussi pour un site de cine Smile (un gros))
 
Tex Visiter le site web du posteur
itsme
WRInaute passionné
WRInaute passionné

Inscrit le: 13 Oct 2004
Messages: 739
Localisation: Toulouse

URL permanente de ce messagePosté le : Lun Juin 13, 2005 12:08    Sujet du message: [script] Generation d'images à la volée

... et moi je compresse a l'upload et resize dynamiquement en jouant sur les parametres de la balise img a la generation de la page, ainsi une seule image sert pour differentes presentations et il n'y a pas de charge serveur Smile
 
itsme Visiter le site web du posteur
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Développement d'un site Web Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 3 - Aller à la page 1, 2, 3  Suivante
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

Définitions :

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort