[script] Generation d'images à la volée
42 messages
• Page 3 sur 3 • 1, 2, 3
-

Maze12 - WRInaute impliqué

- Messages: 506
- Inscription: 7 Juil 2005
je suis en train de une class galerie avec comme tu precise la possibilité de mettre les photos par repertoire (il cree 3 type de format) il gere automatique les page posibilite de les rajouter une par une, disposition paramettrable, url_rw et tout ca parametrable par un panneau d'admin et sans Bdd.
Je la mettrai a disposition des qu'elle sera potable (le code est encore "cradoc" et il reste des bug de portabilité
pour voir ce que ca donne c'est ici -> http://www.logitour-repdom.com/photo-re ... caine.html
Je la mettrai a disposition des qu'elle sera potable (le code est encore "cradoc" et il reste des bug de portabilité
pour voir ce que ca donne c'est ici -> http://www.logitour-repdom.com/photo-re ... caine.html
- fenixe
- Nouveau WRInaute

- Messages: 33
- Inscription: 9 Mai 2006
Salut a tous.
J'ai fait un petit script pour que les visiteurs de mon site puissent poster une photo, leur post s'enregister ds une bdd, et j'ai ensuite une page qui viste la bdd pour mettre en page toutes les images postées par ce script.
Dans cette page, j'ai une miniature de chaque image, une moyenne et quand on clique sur la moyenne ça affiche la grande.
Seulement je n'ai pas su comment faire pour céer trois images différentes dynamiquement quand le visiteur poste la sienne, et du coup c'est la grande image qui est affichée en petit et en moyen, et donc ça ralentit le chargement de la page...
Si vous avez quelque chose a me proposer je serai heureux, je pense par exemple au code de tex qui a l'air parfait, si tu pouvais me le filer... ou sinon celui de zimounet, je pourait peut etre en faire quelque chose.
Merci
J'ai fait un petit script pour que les visiteurs de mon site puissent poster une photo, leur post s'enregister ds une bdd, et j'ai ensuite une page qui viste la bdd pour mettre en page toutes les images postées par ce script.
Dans cette page, j'ai une miniature de chaque image, une moyenne et quand on clique sur la moyenne ça affiche la grande.
Seulement je n'ai pas su comment faire pour céer trois images différentes dynamiquement quand le visiteur poste la sienne, et du coup c'est la grande image qui est affichée en petit et en moyen, et donc ça ralentit le chargement de la page...
Si vous avez quelque chose a me proposer je serai heureux, je pense par exemple au code de tex qui a l'air parfait, si tu pouvais me le filer... ou sinon celui de zimounet, je pourait peut etre en faire quelque chose.
Merci
- gorchfock
- WRInaute impliqué

- Messages: 762
- Inscription: 23 Oct 2006
Bon ben moi il va falloir que je m'y mette à faire la création d'images à la volée
, car pour l'instant j'y vais au burin
, mais comme j'ai peu de photos et qu'en plus je rajoute une ombre portée ...
Fandecine, en modifiant un peu ton script, c'est possible de rajouter l'ombre portée
(je t'avoue que je ne l'ai pas lu en entier, et comme en ce moment je prépare une certif PHP
)
A+
A+
-

XenonDelee - WRInaute impliqué

- Messages: 923
- Inscription: 6 Avr 2004
voila une façon simple de redimensionner les images lors de l'upload
l'image est ici réduite de 40%
Vous pouvez changer le pourcentage ...
ps : le code n'est pas totalement de moi ... je me suis inspiré de ce que j'ai trouvé sur le net ... mais je me souviens plus où ... donc dsl de ne pas citer ma source ... mais comme qui disait plus haut ... vive l'open source
- Code: Tout sélectionner
function miniaturiser($file,$nom,$rep){
$size = getimagesize($file);
$largeur=$size[0];
$hauteur=$size[1];
$dest_width=round(($largeur*0.4),0);
$dest_eight=round(($hauteur*0.4),0);
$src_img = imagecreatefromjpeg($file);
$dst_img = imagecreatetruecolor($dest_width,$dest_eight);
imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dest_width, $dest_eight,$size[0], $size[1]);
$nom=$rep.$nom;
imagejpeg($dst_img,$nom, 60);
}
l'image est ici réduite de 40%
- Code: Tout sélectionner
$dest_width=round(($largeur*0.4),0);
$dest_eight=round(($hauteur*0.4),0);
Vous pouvez changer le pourcentage ...
ps : le code n'est pas totalement de moi ... je me suis inspiré de ce que j'ai trouvé sur le net ... mais je me souviens plus où ... donc dsl de ne pas citer ma source ... mais comme qui disait plus haut ... vive l'open source
Dernière édition par XenonDelee le Ven Déc 22, 2006 11:41, édité 1 fois.
-

XenonDelee - WRInaute impliqué

- Messages: 923
- Inscription: 6 Avr 2004
ps 2
petite amélioration du code précédent
comme ça on passe le pourcentage en paramètre ... et en plus c'est plus court ...
variables :
$file=le nom du fichier de départ avec le chemin ( ex: ../photos/monimage.jpg )
$nom = le nom de la miniature avec le chemin ( ex: ../photos/m_monimage.jpg )
$pourcentage : le chiffre doit être un 0.... ( ex : 0.5 pour 50 % )
et voilou
petite amélioration du code précédent
- Code: Tout sélectionner
function miniaturiser($file,$nom,$pourcentage){
$size = getimagesize($file);
$largeur=round(($size[0]*$pourcentage),0);
$hauteur=round(($size[1]*$pourcentage),0);
$src_img = imagecreatefromjpeg($file);
$dst_img = imagecreatetruecolor($largeur,$hauteur);
imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $largeur, $hauteur,$size[0], $size[1]);
imagejpeg($dst_img,$nom, 60);
}
comme ça on passe le pourcentage en paramètre ... et en plus c'est plus court ...
variables :
$file=le nom du fichier de départ avec le chemin ( ex: ../photos/monimage.jpg )
$nom = le nom de la miniature avec le chemin ( ex: ../photos/m_monimage.jpg )
$pourcentage : le chiffre doit être un 0.... ( ex : 0.5 pour 50 % )
et voilou
- extremenet
- WRInaute discret

- Messages: 166
- Inscription: 2 Oct 2006
Re: [script] Generation d'images à la volée
RE
J'ai reussi à faire une fonction avec ce que j'ai pu trouver
Le probleme c'est qu'il n'arrive pas à créer la deuxiéme image.
Si quelqu'un peu m'aider sur cette fonction
Merci par avance
J'ai reussi à faire une fonction avec ce que j'ai pu trouver
Le probleme c'est qu'il n'arrive pas à créer la deuxiéme image.
Si quelqu'un peu m'aider sur cette fonction
- Code: Tout sélectionner
if(!empty($_FILES["fichierimage"]["name"])){
$racine="avatar";
$width_max = 1100; // Largeur max de l'image en pixels
$height_max = 1100;
$max_size = 500000;
$name = $_FILES["fichierimage"]["name"];
$ext = substr($name, strrpos($name, ".") + 1);
$nom_fichier=basename($name,".".$ext);
$extension = strrchr($name, ".");
$nom_fichier="avatar$_SESSION[id_membre].$ext";
$filename = "$racine/$nom_fichier";
if (@move_uploaded_file($_FILES["fichierimage"]["tmp_name"], "$racine/$nom_fichier")){
@chmod("$racine/$nom_fichier", 0777);
if ($ext=="PNG" or $ext=="png") { $src_img1 = "imagecreatefrompng"; }
if ($ext=="gif" or $ext=="GIF") { $src_img1 = "imagecreatefromgif"; }
if ($ext=="jpg" or $ext=="JPG") { $src_img1 = "imagecreatefromjpeg"; }
if ($ext=="jpeg" or $ext=="JPEG") { $src_img1 = "imagecreatefromjpeg"; }
$nom_fichier1="avatar$_SESSION[id_membre].$ext";
$nom1 = "$racine/$nom_fichier1";
$size = getimagesize($filename);
$largeur="200";
$hauteur="200";
$src_img = $src_img1($filename);
$racine = imagecreatetruecolor($largeur,$hauteur);
imagecopyresampled($racine, $src_img, 0, 0, 0, 0, $largeur, $hauteur,$size[0], $size[1]);
imagejpeg($racine,$nom1, 75);
$nom_fichier1="avatar$_SESSION[id_membre].$ext";
$nom1 = "$racine/$nom_fichier1";
$size = getimagesize($nom1);
$largeur="60";
$hauteur="60";
$src_img = $src_img1($nom1);
$racine = imagecreatetruecolor($largeur,$hauteur);
imagecopyresampled($racine, $src_img, 0, 0, 0, 0, $largeur, $hauteur,$size[0], $size[1]);
imagejpeg($racine,$nom1, 75);
}
Merci par avance
- extremenet
- WRInaute discret

- Messages: 166
- Inscription: 2 Oct 2006
Re: [script] Generation d'images à la volée
oui
les 2 derniere lignes du deuxieme code à la creation sont en defaut
imagecopyresampled($racine, $src_img, 0, 0, 0, 0, $largeur, $hauteur,$size[0], $size[1]);
imagejpeg($racine,$nom1, 75);
les 2 derniere lignes du deuxieme code à la creation sont en defaut
imagecopyresampled($racine, $src_img, 0, 0, 0, 0, $largeur, $hauteur,$size[0], $size[1]);
imagejpeg($racine,$nom1, 75);
- tonguide
- WRInaute passionné

- Messages: 1393
- Inscription: 28 Nov 2003
Re: [script] Generation d'images à la volée
Je ne comprends pas trop pourquoi tu utilises un fichier à part (que tu appelles via <img>) pour générer tes images et que ensuite, tu appelles une URL pour (si j'ai bien compris) générer ton image qui sera donc visible uniquement de l'admin qui ajoute l'image (donc inutile dans l'absolu).
Comme PHP n'exige pas qu'on visualise l'image pour la générer, pourquoi ne pas se contenter d'une fonction (ou mieux ... une class permettant de faire bien plus de chose qu'une simple redirection) qui la générerai sans avoir une page intermédiaire pour générer tes miniatures ? Bref inclure la génération de tes miniatures directement lors de ton traitement d'ajout de fiche de ciné.
Et du coup, je comprend la remarque qui a suivit, concernant le file_exists.
Sinon, pour le code, je ne vais pas m'amuser à dire : "tu pourrais faire ça plus proprement ..." on trouve toujours plus malin que soit.
Sinon, une petite astuce (à prendre ou pas) qui permet à la fois de générer les photos à la volée et à la fois de garder l'image en cache navigateur serait de :
1- Niveau HTML vous mettez une url avec un format fixe et identifiable. exemple : 150x120/votre-rewrite-125.jpg qui correspondrait à "largeur"x"hauteur"/"titre rewrite de l'image"-"id de l'image"."extension". Vous pourriez évidemment dire "mini" au lieu de "150x120".
2- On suppose que la photo n'existe pas (miniature non faites). Forcement, on arrive sur une erreur 404. A ce moment là, on appel un fichier PHP (via .htaccess) qui fera le contrôle de l'url et après parse, si il est identifié que c'est une image, qu'elle existe en original, et qu'on demande tel ou tel taille (qui serait contrôlé pour éviter les pb avec les petits malins), on génère l'image, on l'enregistre au bon endroit et on l'affiche via header() ensuite, histoire de ne pas avoir d'image retournant une erreur lors de la première génération. (il va de soi que si ce n'est pas une image, on renvoi sa page 404 classique)
3- Si elle existe (suite à la première création), aucun soucis, elle est affiché directement sans appel de PHP et donc il est parfaitement possible de gérer le cache navigateur, puisqu'en effet, cette image existe en dure sur votre serveur.
Donc gros avantage, vous changez de taille, c'est totalement transparent pour vous comme pour le visiteur (si votre programme de miniature est bien géré, ça se voit pas). Et c'est aussi simple que de changer un bout de code dans votre code ensuite.
Je l'ai moi-même testé sur 65 000 images suite à un changement de design où les miniatures devaient quasi doublé de taille et c'était bien pratique de ne pas se préoccuper de ça. (et sincèrement, les images pas encore miniaturisés s'affichées quasiment à la même vitesse que les autres).
Sinon, je les génère en général également dans l'admin, parce que tout est automatisé et que c'est donc tout aussi simple.
Comme PHP n'exige pas qu'on visualise l'image pour la générer, pourquoi ne pas se contenter d'une fonction (ou mieux ... une class permettant de faire bien plus de chose qu'une simple redirection) qui la générerai sans avoir une page intermédiaire pour générer tes miniatures ? Bref inclure la génération de tes miniatures directement lors de ton traitement d'ajout de fiche de ciné.
Et du coup, je comprend la remarque qui a suivit, concernant le file_exists.
Sinon, pour le code, je ne vais pas m'amuser à dire : "tu pourrais faire ça plus proprement ..." on trouve toujours plus malin que soit.
Sinon, une petite astuce (à prendre ou pas) qui permet à la fois de générer les photos à la volée et à la fois de garder l'image en cache navigateur serait de :
1- Niveau HTML vous mettez une url avec un format fixe et identifiable. exemple : 150x120/votre-rewrite-125.jpg qui correspondrait à "largeur"x"hauteur"/"titre rewrite de l'image"-"id de l'image"."extension". Vous pourriez évidemment dire "mini" au lieu de "150x120".
2- On suppose que la photo n'existe pas (miniature non faites). Forcement, on arrive sur une erreur 404. A ce moment là, on appel un fichier PHP (via .htaccess) qui fera le contrôle de l'url et après parse, si il est identifié que c'est une image, qu'elle existe en original, et qu'on demande tel ou tel taille (qui serait contrôlé pour éviter les pb avec les petits malins), on génère l'image, on l'enregistre au bon endroit et on l'affiche via header() ensuite, histoire de ne pas avoir d'image retournant une erreur lors de la première génération. (il va de soi que si ce n'est pas une image, on renvoi sa page 404 classique)
3- Si elle existe (suite à la première création), aucun soucis, elle est affiché directement sans appel de PHP et donc il est parfaitement possible de gérer le cache navigateur, puisqu'en effet, cette image existe en dure sur votre serveur.
Donc gros avantage, vous changez de taille, c'est totalement transparent pour vous comme pour le visiteur (si votre programme de miniature est bien géré, ça se voit pas). Et c'est aussi simple que de changer un bout de code dans votre code ensuite.
Je l'ai moi-même testé sur 65 000 images suite à un changement de design où les miniatures devaient quasi doublé de taille et c'était bien pratique de ne pas se préoccuper de ça. (et sincèrement, les images pas encore miniaturisés s'affichées quasiment à la même vitesse que les autres).
Sinon, je les génère en général également dans l'admin, parce que tout est automatisé et que c'est donc tout aussi simple.
42 messages
• Page 3 sur 3 • 1, 2, 3
Lectures recommandées sur ce thème :
- Tronquer images à la volée
- script generation automatique index sitemap
- Script php de génération de thumb à partir d'une URL
- [script] Génération Google sitemap dynamique sans BDD
- Script maison de génération d'erreur avec envoi d'un e-mail
- script images defilantes
- Script d'extraction Googles Images
- Cherche script d'hebergement d images
- Script de redimensionnement photos/images
- <script> Whois et images/slider incompatibilité?
- Les albums web Picasa passent à 1 Go de stockage - 08-03-2007
- Google Chrome dépasse Safari aux USA - 29-06-2010
- Photos satellite des incendies en Grèce dans Google Earth - 30-08-2007
- Ajouter un Gadget Google sur son site - 04-10-2006
- Google Desktop pour Mac OS X - 05-04-2007
- Picasa Web Albums en français - 08-12-2006
- Google Pack s'enrichit de 2 nouveaux logiciels gratuits - 28-03-2007
- Résultats des élections présidentielles du 1er tour 2007 - 22-04-2007
Consultez la description détaillée des produits ou services de Google suivants : Google Images, Hello, Google Image Labeler
Qui est en ligne
Utilisateurs parcourant ce forum: padadam22 et 0 invités



