PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 27-03-2010 15:20:05

dan4
Membre
Inscription : 10-01-2010
Messages : 128

function resizeImage()

Je viens de tester cela et ça devrait fonctionner en principe.
J'ai mis mon fichier test.jpg dans le même répertoire que mon fichier resize.php
Quelque chose semble travailler mais rien au bout.
GD2 est installé et fonctionnel.

Une erreur dans ce code?

J'ai essayé avec 320px et 240px non plus.

<?php

   
function resizeImage($originalImage,$toWidth,$toHeight){
   

    list($width, $height) = getimagesize($originalImage);
    $xscale=$width/$toWidth;
    $yscale=$height/$toHeight;
   

    if ($yscale>$xscale){
        $new_width = round($width * (1/$yscale));
        $new_height = round($height * (1/$yscale));
    }
    else {
        $new_width = round($width * (1/$xscale));
        $new_height = round($height * (1/$xscale));
    }


    $imageResized = imagecreatetruecolor($new_width, $new_height);
    $imageTmp     = imagecreatefromjpeg ($originalImage);
    imagecopyresampled($imageResized, $imageTmp, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

    return $imageResized;
}    

$originalImage = "test.jpg";
$toWidth = "320";
$toHeight = "240";

resizeImage($originalImage,$toWidth,$toHeight);
   
   
?>


Salutations smile

Hors ligne

#2 27-03-2010 15:28:19

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : function resizeImage()

Le fait que tu retournes une variable mais que tu ne la récupères pas après l'utilisation de ta fonction ?

Hors ligne

#3 28-03-2010 14:04:29

dan4
Membre
Inscription : 10-01-2010
Messages : 128

Re : function resizeImage()

$originalImage = "test.jpg";
$toWidth = "320";
$toHeight = "240";

resizeImage($originalImage,$toWidth,$toHeight);

J'exécute la fonction resizeImage(); mais rien ne se passe.

Mon image est dans le même répertoire. Il doit manquer une autre fonction. je sais pas.


Salutations smile

Hors ligne

#4 28-03-2010 14:40:48

dan4
Membre
Inscription : 10-01-2010
Messages : 128

Re : function resizeImage()

Tiens, entre-temps, j'allais voir dans le manuel de PHP et il y avait un exemple que j'ai très légèrement modifié :

  $source_pic = $_FILES['image']['tmp_name'];
  $destination_pic = $chemin.$noart.".jpg";
  $max_width = 320;
  $max_height = 240;

  $src = imagecreatefromjpeg($source_pic);
  list($width,$height)=getimagesize($source_pic);

  $x_ratio = $max_width / $width;
  $y_ratio = $max_height / $height;

  if( ($width <= $max_width) && ($height <= $max_height) ){
      $tn_width = $width;
      $tn_height = $height;
      }elseif (($x_ratio * $height) < $max_height){
          $tn_height = ceil($x_ratio * $height);
          $tn_width = $max_width;
      }else{
          $tn_width = ceil($y_ratio * $width);
          $tn_height = $max_height;
  }

  $tmp=imagecreatetruecolor($tn_width,$tn_height);
  imagecopyresampled($tmp,$src,0,0,0,0,$tn_width, $tn_height,$width,$height);

  imagejpeg($tmp,$destination_pic,100);
  imagedestroy($src);
  imagedestroy($tmp);

Cependant, je pourrais transformer cela pour que ça devienne un fonction :

(Eclairez moi si je me trompe)

<?php
function MonImageResize($masource,$ladestination,$maxwidth,$maxheight)
{

  $source_pic = $_FILES['image']['tmp_name'];
  $destination_pic = $chemin.$noart.".jpg";
  $max_width = 320;
  $max_height = 240;

  $src = imagecreatefromjpeg($source_pic);
  list($width,$height)=getimagesize($source_pic);

  $x_ratio = $max_width / $width;
  $y_ratio = $max_height / $height;

  if( ($width <= $max_width) && ($height <= $max_height) ){
      $tn_width = $width;
      $tn_height = $height;
      }elseif (($x_ratio * $height) < $max_height){
          $tn_height = ceil($x_ratio * $height);
          $tn_width = $max_width;
      }else{
          $tn_width = ceil($y_ratio * $width);
          $tn_height = $max_height;
  }

  $tmp=imagecreatetruecolor($tn_width,$tn_height);
  imagecopyresampled($tmp,$src,0,0,0,0,$tn_width, $tn_height,$width,$height);

  imagejpeg($tmp,$destination_pic,100);
  imagedestroy($src);
  imagedestroy($tmp);

}

MonImageResize("test.jpg","resultat.jpg","100","80")
?>

Ceci est est supposé appliquer les nouvelles dimenssions à résultat.jpg en gardant les proportions. C'est exactement ce que je voulais.  Je mets ça après que le fichier soit uploadé.

Et je comprends majoritairement la fonction en soit. J'ai passé en revu leur fonctionnement sans avoir testé par contre.

Pour return, j'étais pas certain quand le mettre.


Salutations smile

Hors ligne

#5 28-03-2010 14:42:36

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : function resizeImage()

C'est le return que tu ne comprends pas, tu en as bien un dans ta premièr fonction mais tu ne l'exploites pas.
C'est un return qui va dans le vent.

Hors ligne

Pied de page des forums