• Moderatore

    Dubbio su funzione ridimensionamento

    Salve ho trovato su internet una funzione per ridimensionare le immagini che trovo comoda ma secondo me ci sono degli errori:
    [php]
    class SimpleImage {

    var $image;
    var $image_type;

    function load($filename) {

      $image_info = getimagesize($filename);
      $this->image_type = $image_info[2];
      if( $this->image_type == IMAGETYPE_JPEG ) {
    
         $this->image = imagecreatefromjpeg($filename);
      } elseif( $this->image_type == IMAGETYPE_GIF ) {
    
         $this->image = imagecreatefromgif($filename);
      } elseif( $this->image_type == IMAGETYPE_PNG ) {
    
         $this->image = imagecreatefrompng($filename);
      }
    

    }
    function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {

      if( $image_type == IMAGETYPE_JPEG ) {
         imagejpeg($this->image,$filename,$compression);
      } elseif( $image_type == IMAGETYPE_GIF ) {
    
         imagegif($this->image,$filename);
      } elseif( $image_type == IMAGETYPE_PNG ) {
    
         imagepng($this->image,$filename);
      }
      if( $permissions != null) {
    
         chmod($filename,$permissions);
      }
    

    }
    function output($image_type=IMAGETYPE_JPEG) {

      if( $image_type == IMAGETYPE_JPEG ) {
         imagejpeg($this->image);
      } elseif( $image_type == IMAGETYPE_GIF ) {
    
         imagegif($this->image);
      } elseif( $image_type == IMAGETYPE_PNG ) {
    
         imagepng($this->image);
      }
    

    }
    function getWidth() {

      return imagesx($this->image);
    

    }
    function getHeight() {

      return imagesy($this->image);
    

    }
    function resizeToHeight($height) {

      $ratio = $height / $this->getHeight();
      $width = $this->getWidth() * $ratio;
      $this->resize($width,$height);
    

    }

    function resizeToWidth($width) {
    $ratio = $width / $this->getWidth();
    $height = $this->getheight() * $ratio;
    $this->resize($width,$height);
    }

    function scale($scale) {
    $width = $this->getWidth() * $scale/100;
    $height = $this->getheight() * $scale/100;
    $this->resize($width,$height);
    }

    function resize($width,$height) {
    $new_image = imagecreatetruecolor($width, $height);
    imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
    $this->image = $new_image;
    }

    }
    [/php]Se io già pongo **$image_type=IMAGETYPE_JPEG **a cosa serve successivamente l' if **$image_type ???
    **Lo chiedo perchè a me serve proprio ridimensionare un png!

    Ditemi cosa ne pensate


  • ModSenior

    Ciao Ivan88,
    la parte a cui ti riferisci tu sono i parametri formali dei metodi della classe, in quel caso inserire:
    [php]function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
    [/php]
    Serve a dare dei valori di default nel caso in cui i parametri $image_type, $compression e $permissions non vengono passati.


  • Moderatore

    Ah ok perfetto,
    non sono ferratissimo sulle funzioni lol

    Questo è il comando per rideimesionare e salvare una funzione
    [php]
    $image = new SimpleImage();
    $image->load('picture.jpg');
    $image->resizeToWidth(250);
    $image->save('picture2.jpg');
    [/php]Però siccome io devo salvarla in png dovrò cambiare l' ultima parte in:
    [php]
    $image->save('picture2.jpg', $image_type=IMAGETYPE_PNG); [/php]


  • ModSenior

    Dovresti fare:
    [php]$image->save('picture2.jpg', IMAGETYPE_PNG);[/php]
    IMAGETYPE_PNG dovrebbe essere ovviamente una costante già definita.


  • Moderatore

    Ok, capito, grazie :ciauz: