Ciao a tutti, uso da parecchi mesi la classe SmartImage per php per l'upload di immagini. mi accorgo che con immagini di grandi dimensioni non le carica. controllando all'interno della classe, mi accorgo che all'inizio c'è questo codice:
dove immagino si calcola la dimensione dell'immagine. mentre il codice che uso quando richiamo la classe è:
quindi se ho file di dimensioni in kilobyte, me le carica, superati i 10 mega non me li carica. come posso ovviare a tale problema?
Codice:
public function SmartImage($src, $bigImageSize=false) {
// In case of very big images (more than 1Mb)
if ($bigImageSize)
$this->setMemoryForBigImage($src);
// set data
$this->src = $src;
$this->info = getimagesize($src);
// open file
if ( $this->info[2] == 2 ) $this->gdID = imagecreatefromjpeg($this->src);
elseif ( $this->info[2] == 1 ) $this->gdID = imagecreatefromgif($this->src);
elseif ( $this->info[2] == 3 ) $this->gdID = imagecreatefrompng($this->src);
}
/**
* Set memory in case of very big images (more than 1Mb)
* new SmartImage($src, true) to activate this function
* Works with (PHP 4 >= 4.3.2, PHP 5) if compiled with --enable-memory-limit
* or PHP>=5.2.1
* Thanks to Andrvm and to Bascunan for this feature
*/
private function setMemoryForBigImage($filename) {
$imageInfo = getimagesize($filename);
$memoryNeeded = round(($imageInfo[0] * $imageInfo[1] * $imageInfo['bits'] * $imageInfo['channels'] / 8 + Pow(2, 16)) * 1.65);
$memoryLimit = (int) ini_get('memory_limit')*10048576;
if ((memory_get_usage() + $memoryNeeded) > $memoryLimit) {
ini_set('memory_limit', ceil((memory_get_usage() + $memoryNeeded + $memoryLimit)/10048576).'M');
return (true);
}
else return(false);
}
dove immagino si calcola la dimensione dell'immagine. mentre il codice che uso quando richiamo la classe è:
Codice:
include("SmartImage089/SmartImage.class.php"); //importo la classe di smartimage
$upload_dir="../images"; //cartella dove salvare le immagini
//tolgo dal nome file i caratteri non consentiti
$arr=array();
$arr[]="'";
$arr[]="\\";
$file_name=str_replace($arr, "", $_FILES['img']['name']);
$file_name=str_replace(".jpg", "", $file_name);
//Ridimensionare un'immagine mantenendo le proporzioni e ottimizzando la risoluzione all'85%
$num = rand();
$img=new SmartImage($_FILES["img"]["tmp_name"]);
$img->resize(250, 200);
$img->saveImage($upload_dir."/".$file_name."-".$num.".jpg");
$nomeimg = $file_name."-".$num.".jpg";
quindi se ho file di dimensioni in kilobyte, me le carica, superati i 10 mega non me li carica. come posso ovviare a tale problema?