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

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


Maze12
WRInaute passionné
WRInaute passionné
 
Messages: 506
Inscription: Jeu Juil 07, 2005 20:34

Message le Ven Fév 03, 2006 8:33

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

fenixe
Nouveau WRInaute
 
Messages: 33
Inscription: Mar Mai 09, 2006 19:49

Message le Ven Aoû 25, 2006 14:03

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


rog
WRInaute accro
WRInaute accro
 
Messages: 1662
Inscription: Jeu Sep 21, 2006 2:32

lol

Message le Jeu Sep 21, 2006 6:40

juste pour remarquer que :

faire appel à un programme externe à php pour redimentionner les images implique que php ne tourne pas en safe mode

ça peut se révéler très dangereux

source : zone-h.org

lol

rog

gorchfock
WRInaute passionné
WRInaute passionné
 
Messages: 597
Inscription: Lun Oct 23, 2006 20:31

Message le Sam Nov 25, 2006 18:33

Bon ben moi il va falloir que je m'y mette à faire la création d'images à la volée :D , car pour l'instant j'y vais au burin :roll: , mais comme j'ai peu de photos et qu'en plus je rajoute une ombre portée ... :roll: 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+


XenonDelee
WRInaute passionné
WRInaute passionné
 
Messages: 919
Inscription: Mar Avr 06, 2004 12:09

Message le Ven Déc 22, 2006 11:32

voila une façon simple de redimensionner les images lors de l'upload

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 :P
Dernière édition par XenonDelee le Ven Déc 22, 2006 11:41, édité 1 fois.


XenonDelee
WRInaute passionné
WRInaute passionné
 
Messages: 919
Inscription: Mar Avr 06, 2004 12:09

Message le Ven Déc 22, 2006 11:36

ps 2

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 :lol:

extremenet
WRInaute discret
WRInaute discret
 
Messages: 89
Inscription: Lun Oct 02, 2006 17:38

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

Message le Dim Mar 01, 2009 19:04

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

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


Leonick
WRInaute accro
WRInaute accro
 
Messages: 12356
Inscription: Dim Aoû 08, 2004 20:24

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

Message le Dim Mar 01, 2009 23:24

As-tu un message d'erreur qui s'affiche ? si non as-tu mis error_reporting(E_ALL) dans ton code ?

extremenet
WRInaute discret
WRInaute discret
 
Messages: 89
Inscription: Lun Oct 02, 2006 17:38

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

Message le Lun Mar 02, 2009 3:21

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);

lyonist
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 184
Inscription: Mar Aoû 05, 2008 19:32

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

Message le Ven Mai 22, 2009 18:22

fandecine est toujours mon préféré. Merci beaucoup, tes tutoriels sont toujours pratiques.

tonguide
WRInaute accro
WRInaute accro
 
Messages: 1242
Inscription: Ven Nov 28, 2003 18:55

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

Message le Dim Mai 31, 2009 1:23

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.

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

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

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: jv2759 et 0 invités