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: