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

Consultez la formation SEO spéciale Wordpress
par WebRankInfo / Ranking Metrics

zimounet
WRInaute passionné
WRInaute passionné
 
Messages: 1796
Enregistré le: 8 Nov 2004

Message le Mar Nov 29, 2005 16:10

finalement, je me suis fait ma propre fonction, je la publierai si sa interresse quelqu'un.

Maze12
WRInaute impliqué
WRInaute impliqué
 
Messages: 506
Enregistré le: 7 Juil 2005

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
Nouveau WRInaute
 
Messages: 33
Enregistré le: 9 Mai 2006

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 passionné
WRInaute passionné
 
Messages: 1665
Enregistré le: 21 Sep 2006

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 impliqué
WRInaute impliqué
 
Messages: 775
Enregistré le: 23 Oct 2006

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 impliqué
WRInaute impliqué
 
Messages: 923
Enregistré le: 6 Avr 2004

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
Modifié en dernier par XenonDelee le Ven Déc 22, 2006 11:41, modifié 1 fois.

XenonDelee
WRInaute impliqué
WRInaute impliqué
 
Messages: 923
Enregistré le: 6 Avr 2004

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: 168
Enregistré le: 2 Oct 2006

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: 22677
Enregistré le: 8 Aoû 2004

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: 168
Enregistré le: 2 Oct 2006

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 discret
WRInaute discret
 
Messages: 220
Enregistré le: 5 Aoû 2008

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 passionné
WRInaute passionné
 
Messages: 1429
Enregistré le: 28 Nov 2003

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.

MichaelWestern
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 6
Enregistré le: 5 Avr 2012

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

Message le Jeu Avr 05, 2012 23:54

Merci pour toutes ces infos grave utile !!!

shaozu21
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 8
Enregistré le: 6 Juil 2013

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

Message le Sam Juil 06, 2013 22:58

Bonjour,

Merci beaucoup mais malheuresement ça ne fonctionne pas chez moi :/

gogonore
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 3
Enregistré le: 18 Juin 2014

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

Message le Mer Juin 18, 2014 17:00

domage qu'il n'y ai pas plus de fonction en php, car en aspirant les images du net, il est plaisant d'en recréer d'autres à 100% basé sur les effets.

J'ai un peu testé et c'est quand même chouette


Formation recommandée sur ce thème :

Formation SEO spéciale Wordpress : apprenez à optimiser le référencement naturel d'un site fait avec Wordpress... Formation Ranking Metrics animée par un expert SEO / Wordpress.

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

Lectures recommandées sur ce thème :