[PHP] Envoi d'image apr formulaire et redimensionnement

Envoi d'image apr formulaire et redimensionnement [PHP] - PHP - Programmation

Marsh Posté le 01-09-2004 à 18:52:57    

Voila, sur mon site web, chaque utilisateur peut envoyer une image a partir d'un formulaire en gise d'avatar. Le probleme est que les utilisateur ne font pas attention et mettent des images enormes.
 
J'aimerais bien pouvoir redimensionné une images avant de lenregistrer
 
Est-ce que qqn aurait une solution pour faire cela?
 
merci

Reply

Marsh Posté le 01-09-2004 à 18:52:57   

Reply

Marsh Posté le 01-09-2004 à 18:56:04    

tellier a écrit :

Voila, sur mon site web, chaque utilisateur peut envoyer une image a partir d'un formulaire en gise d'avatar. Le probleme est que les utilisateur ne font pas attention et mettent des images enormes.
 
J'aimerais bien pouvoir redimensionné une images avant de lenregistrer
 
Est-ce que qqn aurait une solution pour faire cela?
 
merci


 
Tu lis la doc très bien faite de PHP avec les exemples. C'est suffisant et pas mal pour comprendre aussi. ;)

Reply

Marsh Posté le 01-09-2004 à 19:07:24    

La fonction barbare que j'ai faite (non y pas de commentaire :whistle:) :

Code :
  1. function img_resize($name, $image, $size, $r_width = 160, $r_height = 120){
  2. $width = $size[0];
  3. $height = $size[1];
  4. if($size[2] == 1)
  5.  $img = imagecreatefromgif($image);
  6. elseif($size[2] == 2)
  7.  $img = imagecreatefromjpeg($image);
  8. elseif($size[2] == 3)
  9.  $img = imagecreatefrompng($image);
  10. if(!isset($img)) return FALSE;
  11. $scale = $height / $width;
  12. $r_scale = $r_height / $r_width;
  13. if($scale < $r_scale){
  14.  $per = $scale * 100 / $r_scale;
  15.  $r_height = round($r_height * $per / 100);
  16. }elseif($scale > $r_scale){
  17.  $per = $r_scale * 100 / $scale;
  18.  $r_width = round($r_width * $per / 100);
  19. }
  20. $new = imagecreatetruecolor($r_width, $r_height);
  21. if(imagecopyresampled($new, $img, 0, 0, 0, 0, $r_width, $r_height, $width, $height)){
  22.  if($size[2] == 1)
  23.   imagegif($new, '../img/small/'.$name);
  24.  elseif($size[2] == 2)
  25.   imagejpeg($new, '../img/small/'.$name, 80);
  26.  elseif($size[2] == 3){
  27.          imagetruecolortopalette($new, FALSE, 180);
  28.   imagepng($new, '../img/small/'.$name);
  29.  }
  30.  return TRUE;
  31. }else
  32.  return FALSE;
  33. }


Oui oui, c'est codé vite fait. :o

Reply

Marsh Posté le 01-09-2004 à 19:19:27    

Au fait $size et le tableau retourné par getimagesize('image.ext').

Reply

Marsh Posté le 01-09-2004 à 23:34:09    

bon jai reussi a me faire un script de redimensionnement mais j'ai un probleme:
 
la miniature créée sort en noir et blanc et de tres mauvaise qualité. Pourtant avec la fonction imagejpeg avec une qualité de 100
 
Qqn sait comment améliorer cela?


Message édité par tellier le 01-09-2004 à 23:34:33
Reply

Marsh Posté le 01-09-2004 à 23:47:29    

voila mon script:
 

Code :
  1. function goResize($isSource,$isDestination,$isName)
  2. {
  3. $iaSize = getimagesize($isSource);
  4. $iiRealWidth = $iaSize[0];
  5. $iiRealHeight = $iaSize[1];
  6. $iiImageType = $iaSize[2];
  7. if($iiRealWidth > $iiRealHeight)
  8. {
  9.  $iiScale = $iiRealWidth / $iiRealHeight;
  10.  $iiDestWidth = 150;
  11.  $iiDestHeight = round($iiDestWidth / $iiScale,0);
  12. }
  13. if($iiRealWidth < $iiRealHeight)
  14. {
  15.  $iiScale = $iiRealHeight / $iiRealWidth;
  16.  $iiDestHeight = 150;
  17.  $iiDestWidth = round($iiDestHeight / $iiScale,0);
  18. }
  19. if($iiRealWidth == $iiRealHeight)
  20. {
  21.  $iiDestWidth = 150;
  22.  $iiDestHeight = 150;
  23. }
  24. //image du type JPG
  25. if($iiImageType == 2)
  26. {
  27.  $ioImage = imagecreatefromjpeg($isSource);
  28.  $ioTempImage = imagecreate($iiDestWidth,$iiDestHeight);
  29.  imagecopyresized($ioTempImage,$ioImage,0,0,0,0,$iiDestWidth,$iiDestHeight,$iiRealWidth,$iiRealHeight);
  30.  imagejpeg($ioTempImage,$isDestination.'m'.$isName,70);
  31. }
  32. }

Reply

Marsh Posté le 01-09-2004 à 23:54:26    

OK mais ca changera koi? je gagne en temps d'éxécution? Je met des if moi car je trouve ca plus lisible (avis perso), mais si y a un gain de temps ok!

Reply

Marsh Posté le 01-09-2004 à 23:57:43    

remplacer imagecopyresized par imagecopyresampled  non ?

Reply

Marsh Posté le 02-09-2004 à 00:01:53    

nan ca change rien avec imagecopyresampled.


Message édité par tellier le 02-09-2004 à 00:03:28
Reply

Marsh Posté le 02-09-2004 à 00:07:38    

remplacer imagecreate par imagecreatetruecolor  non ?


Message édité par pains-aux-raisins le 02-09-2004 à 00:07:52
Reply

Marsh Posté le 02-09-2004 à 00:07:38   

Reply

Marsh Posté le 02-09-2004 à 00:12:39    

+1

Reply

Marsh Posté le 02-09-2004 à 00:18:59    

merci!
imagecreatetruecolor marche comme je veux! merci a vous!

Reply

Marsh Posté le 02-09-2004 à 00:39:30    

drapal :o

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed