enregistrer une image redimentionner avec ext _mini

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : enregistrer une image redimentionner avec ext _mini

Re: enregistrer une image redimentionner avec ext _mini

par sax76 » 29 mai 2011, 01:08

bon j'ai reussi avec l'aide du code au dessus un redimensionnement pour mes images en GIF, JPG , PNG avec la fonction ImageCreateFromXXX et ImageXXX
mais je rencontre un soucis pour le BMP il existe pas de fonction ImageCreateFrombmp .

j'ai trouvé un cde php pour faire un ImageCreateFrombmp & imgebmp
http://files.codes-sources.com/fichier. ... f=test.php

la conversion fonctionne sur certaines image bmp mais d'autres j'ai un cadre noir a la place de l'image

du coup je peux generer une vignette mais pas la sauvegarder correctement , une idée ?

Re: enregistrer une image redimentionner avec ext _mini

par sax76 » 28 mai 2011, 23:32

merci pour ta reponse Ryle,

bon j'ai reussi en trouvant un bout de code et en prenant le fichier image à la source du code php.
je peux donc maintenant choisir la taille de ma vignette .

reste un seul hic , voic le code utilisé :
				   $image = $rep.$nom_fichier;
				   $src_im = ImageCreateFromJpeg($image);
				   $size = GetImageSize($image);
				   $src_w = $size[0];
				   $src_h = $size[1];
				   //taille de votre image
				   $dst_w = 150; 
				   // Contraint le rééchantillonage à une largeur fixe
				   // Maintient le ratio de l'image
				   $dst_h = round(($dst_w / $src_w) * $src_h);
				   $dst_im = ImageCreateTrueColor($dst_w,$dst_h);
				   /* ImageCopyResampled copie et rééchantillonne l'image originale*/
				   ImageCopyResampled($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
				   /* ImageJpeg génère l'image dans la sortie standard (c.à .d le navigateur).
				   Le second paramètre est optionnel ; dans ce cas, l'image est générée dans un
				    fichier*/
				   $miniature = "mini_$nom_fichier";
				   ImageJpeg($dst_im, $miniature);

la var $image est une info sous cette forme : $rep.$nom_fichier , $rep c'est le dossier 000/ et $nom_fichier min_image.jpg
le code charge donc l'image qui se trouve à 000/mon_image.jpg
il ma redimentionne à 150 puis lui ajoute l'extension mini_ au nom
mais l'image est enregistrer a la base de ma serveur dans le WWW/ la ou se trouve le code php et le dossier 000/
je voudrais qu'il soit enregistrer dans un dossier vignette/ par ex
je dois ajouter quoi au code pour qu'il sauvegarde la vignette dans un dossier spécifique

Re: enregistrer une image redimentionner avec ext _mini

par Ryle » 28 mai 2011, 23:15

En fait ton script ne redimensionne absolument pas l'image. Il se contente de calculer la hauteur/largeur adaptée pour l'affichage en fonction des maximum que tu as spécifié.

Si tu veux redimensionner physiquement l'image, il te faut utiliser la fonction imagecopyresized().

En gros, il te faut ouvrir l'image avec la fonction qui va bien (imagecreatefromgif(), imagecreatefromjpeg(), imagecreatefrompngselon(), ... selon le type de l'image), puis redimensionné l'image avec imagecopyresized() (en exploitant au besoin ton code actuel pour calculer les hauteur/largeur de l'image redimensionnée), et enfin enregistrer la nouvelle image dans le format souhaité (imagejpeg(), imagepng(), ...)

enregistrer une image redimentionner avec ext _mini

par sax76 » 28 mai 2011, 22:05

bonjour,
voila j'utilise un code php , trouvé sur le net pour redimensionner tout type d'image (il fonctionne tres bien) :
<?
function redimage($img_src,$dst_w,$dst_h) {
   // Lit les dimensions de l'image
   $size = GetImageSize($img_src);  
   $src_w = $size[0]; $src_h = $size[1];
   // Teste les dimensions tenant dans la zone
   $test_h = round(($dst_w / $src_w) * $src_h);
   $test_w = round(($dst_h / $src_h) * $src_w);
   // Si Height final non précisé (0)
   if(!$dst_h) $dst_h = $test_h;
   // Sinon si Width final non précisé (0)
   elseif(!$dst_w) $dst_w = $test_w;
   // Sinon teste quel redimensionnement tient dans la zone
   elseif($test_h>$dst_h) $dst_w = $test_w;
   else $dst_h = $test_h;
   // Affiche les dimensions optimales
   echo "WIDTH=".$dst_w." HEIGHT=".$dst_h;
}          ?>
<A href="<? echo $url; ?>"  target="_blank" ><IMG SRC="<?= $url ?> " border=0 align="right" <? redimage( ''.$url.'' ,200,200) ?> /></A>
                         
j'affiche sur mon site l'image récupéré de la var $url ($url =lien complet de l'image sur mon serveur http://www.xxxx.fr/xxxx/xxx.jpg), au format 200,200 , qu'elle soit en bmp , jpeg , png , gif
mais en fait c'est l'image réel redimensionné elle est donc sur mon serveur en taille réel , exemple 900*700 ou autre format.
je voudrais en même temps que je l'affiche , l’enregistrer pour générer une vignette .

je me retrouverais donc dans mon /dossier avec l'image reel : mon-image.jpg par ex , et dans le meme fichier l'image mon-image-mini.jpg qui serait la vignette de l'autre .
j’avoue être un peu pommé dans le code pour l'enregistrer je me suis aidé du imagejpg() mais ca plante , j'ai tjrs des erreurs et cette fonction ne va que pour du jpg , alors qu'il me faut pouvoir enregistrer tous les formats cité au dessus .

du coup je me tourne vers vous pour me donner une piste pour résoudre ce petit soucis php :)

Cdt Pascal