Buongiorno a tutti,
ho da circa un anno ricominciato a studiare php in una scuola di informatica e ho un esercizio da fare.
Devo creare una classe che si occupi di ridimensionare e salvare delle immagini prendendole da una specifica cartella e salvandole in formato 100x100 in un'altra (chiamata thumbnail).
Nelle richieste è specificato il modo in cui devo chiamare i metodi:
	
	
	
		
Dunque non creo l'oggetto con "new" ma lo richiamo staticamente per il primo metodo, ma poi gli altri li richiamo normalmente.
il mio codice funziona se richiamo così i metodi:
	
	
	
		
non riesco a venirne a capo....qualcuno ha qualche idea?
Di seguito il codice della classe:
	
	
	
		
grazie mille 
Davide
				
			ho da circa un anno ricominciato a studiare php in una scuola di informatica e ho un esercizio da fare.
Devo creare una classe che si occupi di ridimensionare e salvare delle immagini prendendole da una specifica cartella e salvandole in formato 100x100 in un'altra (chiamata thumbnail).
Nelle richieste è specificato il modo in cui devo chiamare i metodi:
		PHP:
	
	Image::load($imgSrc)
        ->resizeAuto($newWidth, $newHeight)
        ->save($imgDest)
        ->display();
	il mio codice funziona se richiamo così i metodi:
		PHP:
	
	Image::load($imgSrc);
        Image::resizeAuto($newWidth, $newHeight);
        Image::save($imgDest);
        Image::display();
	Di seguito il codice della classe:
		PHP:
	
	<?php
class Image {
    public static $src_im;
    public static $dst_im;
    public static $newWidth;
    public static $newHeight;
    public static $imgSrc;
 
    public static function imagecreatefrom($imgSrc) {
      
        if(!file_exists($imgSrc)) {
            throw new Exception("the image doesn't exists");
        }
      
        $ext = pathinfo($imgSrc, PATHINFO_EXTENSION);
      
        if($ext == 'jpg')
            $ext = 'jpeg';
      
        if(empty($ext))
            throw new Exception("l'estensione del file non è valida");
      
        return call_user_func("imagecreatefrom$ext",$imgSrc); // add generic function
    }
 
    public static function load($imgSrc) {
        self::$imgSrc = $imgSrc;
        //$ext = pathinfo(self::$imgSrc, PATHINFO_EXTENSION);
        self::$src_im = self::imagecreatefrom(self::$imgSrc);
      
    }
    public static function resizeAuto($newWidth, $newHeight) {
      
        if(!is_int($newWidth) or !is_int($newHeight))
            throw new Exception("Veuillez renseigner un entier");
          
      
        self::$newWidth = $newWidth;
        self::$newHeight = $newHeight;
        self::$dst_im = imagecreatetruecolor(self::$newWidth, self::$newHeight);
        $infos = pathinfo(self::$imgSrc);
      
        list($width, $height, $type, $attr) = getimagesize(self::$imgSrc);
        imagecopyresampled(self::$dst_im, self::$src_im, 0, 0, 0, 0, self::$newWidth, self::$newHeight, $width, $height);
    }
    public static function save($imgDest) {
        $extension = pathinfo($imgDest, PATHINFO_EXTENSION);
        if(empty($extension))
            throw new Exception("L'extension n'est pas specifié");
      
        $choices = array(
            'jpeg'=> 'imagejpeg',
            'jpg' => 'imagejpeg',
            'png' => 'imagepng',
            'gif' => 'imagegif'
        );
        
        call_user_func_array($choices[$extension],array(self::$dst_im, $imgDest));   
    }
    public static function display() {
        $infos = pathinfo(self::$imgSrc);
        header('location: http://' . $_SERVER['HTTP_HOST'] . '/php/img_gallery/thumbnail/'.$infos['basename']);
    }
}
?>
	Davide
			
				Ultima modifica di un moderatore: