Originariamente inviato da bstefano79
immagino che questo
Codice PHP:
if($path==NULL)
die("Errore nel codice sorgente.");
$this->path = $path;
list($this->original_width,$this->original_height)=getimagesize($this->path);
debba stare nel costruttore e non così a caso nella classe.
Ovvero
Codice PHP:
class immagine{
private $path = NULL; // questa è la riga 12, la prima della classe
public $original_width=NULL;
public $original_height=NULL;
function __construct($path){
if($path==NULL)
die("Errore nel codice sorgente.");
$this->path = $path;
list($this->original_width,$this->original_height)=getimagesize($this->path);
}
[...]
}
no scusate ho fatto copia-incolla in due riprese e ho saltato la riga public function __contructor($path){ motivo per cui c'è quella famosa graffa in più però è proprio in questa forma che non funzionava. in più per quanto io no faccia grande affidamento sul validatore di dreamweaver se co fossero delle parentesi in meno o di troppo mi avviserebbe invece la sintassi è tutta ok...
vi posto la classe intera (non fossilizzatevi su eventuali molteplici errori nell'implementazione delle funzioni, l'ho buttata giù alla veloce contando di testarla e correggere xD)
Codice PHP:
<?
/*
CLASS INFO
ERROR CODES:
001 Arguments not passed or passed null.
002 Access to resources denied.
003 File index out of boubnds. Maximum index 9999 exceded.
*/
class immagine{
private $path = NULL; //qui mi da errore, ho pensato a un errore
//nella dichiarazione della classe ma cercando su internet e documentazione php
//sono dichiarate tutte in questo modo...
public $original_width=NULL;
public $original_height=NULL;
public function __construct($path){
if($path==NULL)
die("Errore nel codice sorgente.");
$this->path = $path;
list($this->original_width,$this->original_height)=getimagesize($this->path);
}
public function fitTo($width,$height){
if($height==NULL&&$width==NULL)
return "001";
if($height==NULL){
list($w, $h)=$this->fitSizeW($width);
}else if($width==NULL){
list($w, $h)=$this->fitSizeH($height);
}else{
list($w, $h)=$this->fitSize($width,$height);
}
if($resized=imagecreatetruecolor($w,$h)){
$tmp=imagecreatefromjpeg($this->path);
imagecopyresampled($resized,$tmp,0,0,0,0,$w,$h,$this->original_width,$this->original_height);
unset($tmp);
}else{
return "002";
}
return $resized;
}
public function saveIncremental($image,$path){
if(file_exists($path)){
$dot_pos=strrpos($path,".");
$slash_pos=strrpos($path,"/");
$index_offset=$dot_pos-$slash_pos;
$file_name=substr($path,0,$dot_pos);
$ext=substr($path,$dot_pos+1,strlen($path));
if($index_offset>4){
if(is_numeric($tmp=substr($file_name,strlen($file_name)-4,strlen($file_name)))){
$tmp++;
if($tmp>9999)
return "003";
$file_name=substr($file_name,0,strlen($file_name)-4);
for($i=0;$i<4-strlen($tmp);$i++){
$file_name.="0";
}
$file_name.=$tmp;
unset($tmp);
}else{
$file_name.="0000";
}
}
$path=$file_name.".".$ext;
}
imagejpeg($image,$path);
}
private function fitSize($width, $height){
if($this->original_width>$width){
$height=($this->original_height*$width)/$this->original_width;
}
if($this->original_height>$height){
$width=($this->original_width*$height)/$this->original_height;
}
return array($width,$height);
}
private function fitSizeH($height){
if($this->original_height>$height){
$width=($this->original_width*$height)/$this->original_height;
}
return array($width,$height);
}
private function fitSizeW($width){
if($this->original_width>$width){
$height=($this->original_height*$width)/$this->original_width;
}
return array($width,$height);
}
}
?>
secondo me c'è qualcosa che non ho capito sulle classi..