J'ai un formulaire qui permet d'uploader jusqu'à 5 images en même temps et
la fonction upload_images() qui permet de le faire ... jusque là tout va
bien.
for($i=0 ; $images[$i]!="" ; $i++)
{
if(getImageSize($images[$i])) // si c'est une image
{
// destination : chemin final de l'image + nom du fichier avec extension
$extension = get_extension($_FILES['images']['name'][$i]);
$img_dest[$i] = $upload_images . $id_article . "_" . $i . "." .
$extension;
// on a tous les éléments donc on déplace l'image
move_uploaded_file($_FILES['images']['tmp_name'][$i] , $img_dest[$i])
or die("Erreur à l'upload de l'image ".$i);
}
}
Là où je coince c'est que je voudrais créer une miniature de la première des
images uploadées, cette miniature me servira de lien vers l'ensemble des 5
images (ou 4 ou 3 ...).
J'ai cherché des tutos sur internet mais ils sont tjs très vagues. Je
voudrais que le plus grand des 2 cotés (longueur et largeur) soit 80px et
que l'autre s'ajuste automatiquement pour conserver les proportions de
l'image. Quelle est la meilleure solution ? Que dois-je ajouter à ma
fonction ci-dessus ?
Merci d'avance pour votre aide.
Erwin
--
Ce message a été envoyé depuis http://newsgroup.codes-sources.com/
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Salagir
On 15 Jul 2003 08:35:49 GMT, in fr.comp.lang.php, erwinol wrote:
Là où je coince c'est que je voudrais créer une miniature de la première des images uploadées voudrais que le plus grand des 2 cotés (longueur et largeur) soit 80px et
Version courte (sous unix avec imagemagick installé):
[d'abord, sauver l'image à réduire sur le disque sous le nom de img_uploaded.whatever (tous formats acceptés sauf peut etre le gif.]
[voilà, un miniature.jpg de toute beauté est créé]
Version longue (avec l'imglib de php [résultats moins beau]): (ne marche pas avec les gifs et autres formats non gérés par l'imglib)
<?php
//NOTE: $nomimg est le nom de l'image uploadée //NOTE2: ceci est initialement le code d'une fonction membre de classe, // d'ou les $this->maxX et $this->maxY, ici égaux à 80.
//génèse de la miniature switch(strtolower($extension)) { case 'jpg' : case 'jpeg' : case 'jpe' : $source = imagecreatefromjpeg($nomimg); break; case 'png' : $source = imagecreatefrompng($nomimg); break; case 'bmp' : $source = imagecreatefromwbmp($nomimg); break; default : return '<span class="error">Votre image est d'un format de fichier que nous ne gerons pas ('.$extension.'). Impossible de continuer la transaction. (Nous gérons le png et jpg).</span>'; } if (!$source) return; //Ca ne devrai jamais etre comme ca mais au cas ou... $destX = imageSX($source); $destY = imageSY($source); $ratio = $destY / $destX; if ($destX > $this->maxX) { $destX = $this->maxX; $destY = $destX * $ratio; $shrink=1; } if ($destY > $this->maxY) { $destY = $this->maxY; $destX = $destY / $ratio; $shrink=1; } //rétréci if ($shrink) { $destination = imagecreate($destX, $destY); imagecopyresized($destination, $source, 0, 0, 0, 0, $destX, $destY, imageSX($source), imageSY($source)); imagejpeg($destination, $nom_minia, 75); // le 75 c'est la qualité. } else copy($nomimg, $nom_minia); return "<img src="$nom_minia">"; }
?>
-- ++++++++ Zelda, Dragon Ball, Mana and my (art)work at www.salagir.com ++++++++ For I am Xander, King of Cretins. May all lesser cretins bow before me. -+- Xander in Buffy The Vampire Slayer, 1x03 - It's still power -+-
On 15 Jul 2003 08:35:49 GMT, in fr.comp.lang.php,
erwinol wrote:
Là où je coince c'est que je voudrais créer une miniature de la première des
images uploadées
voudrais que le plus grand des 2 cotés (longueur et largeur) soit 80px et
Version courte (sous unix avec imagemagick installé):
[d'abord, sauver l'image à réduire sur le disque sous le nom de
img_uploaded.whatever (tous formats acceptés sauf peut etre le gif.]
[voilà, un miniature.jpg de toute beauté est créé]
Version longue (avec l'imglib de php [résultats moins beau]):
(ne marche pas avec les gifs et autres formats non gérés par l'imglib)
<?php
//NOTE: $nomimg est le nom de l'image uploadée
//NOTE2: ceci est initialement le code d'une fonction membre de classe,
// d'ou les $this->maxX et $this->maxY, ici égaux à 80.
//génèse de la miniature
switch(strtolower($extension)) {
case 'jpg' : case 'jpeg' : case 'jpe' :
$source = imagecreatefromjpeg($nomimg); break;
case 'png' : $source = imagecreatefrompng($nomimg); break;
case 'bmp' : $source = imagecreatefromwbmp($nomimg); break;
default :
return '<span class="error">Votre image est d'un format de fichier que nous ne gerons pas ('.$extension.'). Impossible de continuer la transaction. (Nous gérons le png et jpg).</span>';
}
if (!$source) return; //Ca ne devrai jamais etre comme ca mais au cas ou...
$destX = imageSX($source);
$destY = imageSY($source);
$ratio = $destY / $destX;
if ($destX > $this->maxX) {
$destX = $this->maxX;
$destY = $destX * $ratio;
$shrink=1;
}
if ($destY > $this->maxY) {
$destY = $this->maxY;
$destX = $destY / $ratio;
$shrink=1;
}
//rétréci
if ($shrink) {
$destination = imagecreate($destX, $destY);
imagecopyresized($destination, $source,
0, 0, 0, 0,
$destX, $destY, imageSX($source), imageSY($source));
imagejpeg($destination, $nom_minia, 75); // le 75 c'est la qualité.
}
else copy($nomimg, $nom_minia);
return "<img src="$nom_minia">";
}
?>
--
++++++++ Zelda, Dragon Ball, Mana and my (art)work at www.salagir.com ++++++++
For I am Xander, King of Cretins. May all lesser cretins bow before me.
-+- Xander in Buffy The Vampire Slayer, 1x03 - It's still power -+-
On 15 Jul 2003 08:35:49 GMT, in fr.comp.lang.php, erwinol wrote:
Là où je coince c'est que je voudrais créer une miniature de la première des images uploadées voudrais que le plus grand des 2 cotés (longueur et largeur) soit 80px et
Version courte (sous unix avec imagemagick installé):
[d'abord, sauver l'image à réduire sur le disque sous le nom de img_uploaded.whatever (tous formats acceptés sauf peut etre le gif.]
[voilà, un miniature.jpg de toute beauté est créé]
Version longue (avec l'imglib de php [résultats moins beau]): (ne marche pas avec les gifs et autres formats non gérés par l'imglib)
<?php
//NOTE: $nomimg est le nom de l'image uploadée //NOTE2: ceci est initialement le code d'une fonction membre de classe, // d'ou les $this->maxX et $this->maxY, ici égaux à 80.
//génèse de la miniature switch(strtolower($extension)) { case 'jpg' : case 'jpeg' : case 'jpe' : $source = imagecreatefromjpeg($nomimg); break; case 'png' : $source = imagecreatefrompng($nomimg); break; case 'bmp' : $source = imagecreatefromwbmp($nomimg); break; default : return '<span class="error">Votre image est d'un format de fichier que nous ne gerons pas ('.$extension.'). Impossible de continuer la transaction. (Nous gérons le png et jpg).</span>'; } if (!$source) return; //Ca ne devrai jamais etre comme ca mais au cas ou... $destX = imageSX($source); $destY = imageSY($source); $ratio = $destY / $destX; if ($destX > $this->maxX) { $destX = $this->maxX; $destY = $destX * $ratio; $shrink=1; } if ($destY > $this->maxY) { $destY = $this->maxY; $destX = $destY / $ratio; $shrink=1; } //rétréci if ($shrink) { $destination = imagecreate($destX, $destY); imagecopyresized($destination, $source, 0, 0, 0, 0, $destX, $destY, imageSX($source), imageSY($source)); imagejpeg($destination, $nom_minia, 75); // le 75 c'est la qualité. } else copy($nomimg, $nom_minia); return "<img src="$nom_minia">"; }
?>
-- ++++++++ Zelda, Dragon Ball, Mana and my (art)work at www.salagir.com ++++++++ For I am Xander, King of Cretins. May all lesser cretins bow before me. -+- Xander in Buffy The Vampire Slayer, 1x03 - It's still power -+-
Damien Accorsi
erwinol wrote:
Salut à vous ! :)
J'ai un formulaire qui permet d'uploader jusqu'à 5 images en même temps et la fonction upload_images() qui permet de le faire ... jusque là tout va bien.
Là où je coince c'est que je voudrais créer une miniature de la première des images uploadées, cette miniature me servira de lien vers l'ensemble des 5 images (ou 4 ou 3 ...).
J'ai cherché des tutos sur internet mais ils sont tjs très vagues. Je voudrais que le plus grand des 2 cotés (longueur et largeur) soit 80px et que l'autre s'ajuste automatiquement pour conserver les proportions de l'image. Quelle est la meilleure solution ? Que dois-je ajouter à ma fonction ci-dessus ?
Merci d'avance pour votre aide.
Erwin
Salut,
j'ai développé un petit outil ci-joint qui liste tous les fichiers d'un répertoire et qui génère automatiquement les miniatures dans le répertoire paramétré. En fait, ce qui t'intéressera sûrement, c'est la fonction "miniature" qui génère la miniature avec le taux de réduction passé en paramètre.
Si tu préfères générer des miniatures aux dimensions déterminées, il te suffira de remplacer le paramètre "$taux_reduc" par une largeur ou hauteur définie puis de modifier les formules de calcul des dimensions de la miniature :
(en fait, dans ces 2 formules, on récupère la largeur et la hauteur de l'image d'origine "ImageSX ( $img_in )" et on multiplie ça par le taux de réduction, qu'on converti en entier).
Pour info, j'ai un appareil photo numérique, et j'utilise ce script pour générer systématiquement des miniatures et des photos à un format déterminé.
if ( $statut == 1 ) { echo "Redimensionnement de $taux_reduc effectué.<br>n"; } else { echo "Un problème est intervenu, la miniature n'a pas été créée.<br>n"; } ImageDestroy ( $img_in ); ImageDestroy ( $img_out );
return $statut; }
// programme principal : on liste tous les fichiers du répertoire d'origine // et on génère la miniature pour chaque fichier trouvé // Attention le type de fichier n'est pas testé !!!
function automatise ( $rep_ori, $rep_dest, $taux ) { echo "<b>traitement : <i>$rep_ori -> $rep_dest @ $taux</i></b><br>n"; // on liste tous les fichiers du répertoire // on ne prend pas en compte le "." et ".." $i=0; $rep=opendir ("$rep_ori"); while ( $fichier=readdir($rep) ) { if ( filetype("$rep_ori/$fichier")=="file" ) { $image[$i]=$fichier; $i++; } }
// on exécute ensuite la miniaturisation $max=$i; for ($i=0; $i<$max; $i++) { echo "* ".$image[$i]." en cours...<br>n"; miniature ( $rep_ori."/".$image[$i], $image[$i], $rep_dest, $taux ); } echo "<hr>nn"; }
?>
erwinol wrote:
Salut à vous ! :)
J'ai un formulaire qui permet d'uploader jusqu'à 5 images en même temps et
la fonction upload_images() qui permet de le faire ... jusque là tout va
bien.
Là où je coince c'est que je voudrais créer une miniature de la première des
images uploadées, cette miniature me servira de lien vers l'ensemble des 5
images (ou 4 ou 3 ...).
J'ai cherché des tutos sur internet mais ils sont tjs très vagues. Je
voudrais que le plus grand des 2 cotés (longueur et largeur) soit 80px et
que l'autre s'ajuste automatiquement pour conserver les proportions de
l'image. Quelle est la meilleure solution ? Que dois-je ajouter à ma
fonction ci-dessus ?
Merci d'avance pour votre aide.
Erwin
Salut,
j'ai développé un petit outil ci-joint qui liste tous les fichiers d'un
répertoire et qui génère automatiquement les miniatures dans le
répertoire paramétré. En fait, ce qui t'intéressera sûrement, c'est la
fonction "miniature" qui génère la miniature avec le taux de réduction
passé en paramètre.
Si tu préfères générer des miniatures aux dimensions déterminées, il te
suffira de remplacer le paramètre "$taux_reduc" par une largeur ou
hauteur définie puis de modifier les formules de calcul des dimensions
de la miniature :
(en fait, dans ces 2 formules, on récupère la largeur et la hauteur de
l'image d'origine "ImageSX ( $img_in )" et on multiplie ça par le taux
de réduction, qu'on converti en entier).
Pour info, j'ai un appareil photo numérique, et j'utilise ce script pour
générer systématiquement des miniatures et des photos à un format déterminé.
if ( $statut == 1 ) {
echo "Redimensionnement de $taux_reduc effectué.<br>n";
}
else {
echo "Un problème est intervenu, la miniature n'a pas été
créée.<br>n";
}
ImageDestroy ( $img_in );
ImageDestroy ( $img_out );
return $statut;
}
// programme principal : on liste tous les fichiers du répertoire d'origine
// et on génère la miniature pour chaque fichier trouvé
// Attention le type de fichier n'est pas testé !!!
function automatise ( $rep_ori, $rep_dest, $taux ) {
echo "<b>traitement : <i>$rep_ori -> $rep_dest @ $taux</i></b><br>n";
// on liste tous les fichiers du répertoire
// on ne prend pas en compte le "." et ".."
$i=0;
$rep=opendir ("$rep_ori");
while ( $fichier=readdir($rep) ) {
if ( filetype("$rep_ori/$fichier")=="file" ) {
$image[$i]=$fichier;
$i++;
}
}
// on exécute ensuite la miniaturisation
$max=$i;
for ($i=0; $i<$max; $i++) {
echo "* ".$image[$i]." en cours...<br>n";
miniature ( $rep_ori."/".$image[$i], $image[$i], $rep_dest, $taux );
}
echo "<hr>nn";
}
J'ai un formulaire qui permet d'uploader jusqu'à 5 images en même temps et la fonction upload_images() qui permet de le faire ... jusque là tout va bien.
Là où je coince c'est que je voudrais créer une miniature de la première des images uploadées, cette miniature me servira de lien vers l'ensemble des 5 images (ou 4 ou 3 ...).
J'ai cherché des tutos sur internet mais ils sont tjs très vagues. Je voudrais que le plus grand des 2 cotés (longueur et largeur) soit 80px et que l'autre s'ajuste automatiquement pour conserver les proportions de l'image. Quelle est la meilleure solution ? Que dois-je ajouter à ma fonction ci-dessus ?
Merci d'avance pour votre aide.
Erwin
Salut,
j'ai développé un petit outil ci-joint qui liste tous les fichiers d'un répertoire et qui génère automatiquement les miniatures dans le répertoire paramétré. En fait, ce qui t'intéressera sûrement, c'est la fonction "miniature" qui génère la miniature avec le taux de réduction passé en paramètre.
Si tu préfères générer des miniatures aux dimensions déterminées, il te suffira de remplacer le paramètre "$taux_reduc" par une largeur ou hauteur définie puis de modifier les formules de calcul des dimensions de la miniature :
(en fait, dans ces 2 formules, on récupère la largeur et la hauteur de l'image d'origine "ImageSX ( $img_in )" et on multiplie ça par le taux de réduction, qu'on converti en entier).
Pour info, j'ai un appareil photo numérique, et j'utilise ce script pour générer systématiquement des miniatures et des photos à un format déterminé.
if ( $statut == 1 ) { echo "Redimensionnement de $taux_reduc effectué.<br>n"; } else { echo "Un problème est intervenu, la miniature n'a pas été créée.<br>n"; } ImageDestroy ( $img_in ); ImageDestroy ( $img_out );
return $statut; }
// programme principal : on liste tous les fichiers du répertoire d'origine // et on génère la miniature pour chaque fichier trouvé // Attention le type de fichier n'est pas testé !!!
function automatise ( $rep_ori, $rep_dest, $taux ) { echo "<b>traitement : <i>$rep_ori -> $rep_dest @ $taux</i></b><br>n"; // on liste tous les fichiers du répertoire // on ne prend pas en compte le "." et ".." $i=0; $rep=opendir ("$rep_ori"); while ( $fichier=readdir($rep) ) { if ( filetype("$rep_ori/$fichier")=="file" ) { $image[$i]=$fichier; $i++; } }
// on exécute ensuite la miniaturisation $max=$i; for ($i=0; $i<$max; $i++) { echo "* ".$image[$i]." en cours...<br>n"; miniature ( $rep_ori."/".$image[$i], $image[$i], $rep_dest, $taux ); } echo "<hr>nn"; }