klas przy okazji znalezienia i próby wykorzystania gotowej klasy
imageresizer.class.php z www.phpclasses.org
Dość prosta i fajna klasa do resizowania uploadowanych obrazków.
Nie wiem czy jest sens cytowania całej klasy, zrobię to jeśli będzie konieczne.
Podam tylko sposób wywołania klasy:
<?php if (isset ($_POST["submit"])) { include ("imageresizer.class.php"); $image = new Image($_FILES['file']['name']); $image -> PicDir = "foto_upload/"; $image -> PicURL = "http://www.domena.pl/"; $image -> TmpName = $_FILES['file']['tmp_name']; $image -> FileSize = $_FILES['file']['size']; $image -> FileType = $_FILES['file']['type']; //$image -> Save(); //use this if you wish images without resizing $image -> Resize (); // W tym miejscu chciał bym mieć dostępną zmienna z wnętrza klasy zawierającą numer błędu } ?> <form name="form" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method=post enctype="multipart/form-data"> <br> <input type="submit" name="submit" value="Prześlij >>"> </form>
Moim problemem jest to, że chciałem użyć zmiennej $error występującej w fonkcji wewnątrz klasy.
Zmienna ta zawiera numer błędu zwyczajnie cyfry od 0-4 symbolizujące typ błędu.
Klasa zawiera funkcję, która wyświetla (echo) odpowiedni komunikat błędu w zależności od cyferki
w zmiennej $error. I ładnie mi to działa ale ja po wykonaniu (wywołaniu) klasy i wyjściu z niej
chciał bym wykonać stosowne akcje w zależności od wartości błędu $error. A ta zmienna nie jest
dostępna już poza klasą, jedynie wewnątrz niej.
Proszę o jakąś ogólną zasadę jak to można zrobić.
Uzupełnienie - treść klasy:
(Od siebie dodałem jedną poprawkę błędu i kilka modyfikacji w sekcji wyświetlającej informacje o obrazku.
Oryginalna klasa dostępna na: www.phpclasses.org)
Należy zwrócić uwagę na funkcję GetError.
<?php class Image { var $FileName; var $FileSize; var $FileType; var $newWidth = 155; // new width var $newHeight = 116; //new height var $TmpName; var $PicDir; //store uploaded images var $PicURL; //URL bazowy var $MaxFileSize = 1258291.2; // 1,2 MB w kilobitach var $ImageQuality = 85; // image compression (max value 100) function Image($FileName) { $this->FileName=$FileName; } function GetInfo() { $newfilepath = $this->PicDir . '' .$this->FileName; $out=' <br><br>Obrazek przesłany!<br> Nazwa plik: <b>'.$this->FileName.'</b><br> Typ pliku graficznego: <b>'.$this->FileType.'</b><br><br> <img border=1 src='. $this->PicURL .''. $this->PicDir . $this->FileName . '><br><br>'; return $out; } function GetFileExtention ($FileName) { return true; } else { return false; } } function ExistFile () { $fileexist = $_SERVER['DOCUMENT_ROOT'] . '/' . $this->PicDir . $this->FileName; } function GetError ($error) { switch ($error) { case 0 <span style="color: #007700": echo "Error: Błędny typ pliku <b>$this->FileType</b>! Dozwolone typ: .jpg, .jpeg, .gif, .png <b>$this->FileName</b><br>"; break; case 1 <span style="color: #007700": break; case 2 <span style="color: #007700": break; case 3 <span style="color: #007700": break; } } function Resize () { else { // Get new sizes $ratio_orig = $width_orig/$height_orig; if ($this->newWidth/$this->newHeight > $ratio_orig) { $this->newWidth = $this->newHeight*$ratio_orig; } else { $this->newHeight = $this->newWidth/$ratio_orig; } $normal = imagecreatetruecolor($this->newWidth, $this->newHeight); if ($ext == "jpg") { $source = imagecreatefromjpeg($this->TmpName); } else if ($ext == "gif") { $source = imagecreatefromgif ($this->TmpName); } else if ($ext == "png") { $source = imagecreatefrompng ($this->TmpName); } imagecopyresampled($normal, $source, 0, 0, 0, 0, $this->newWidth, $this->newHeight, $width_orig, $height_orig); if ($ext == "jpg") { //ob_start(); imagejpeg($normal, "$this->PicDir/$this->FileName", "$this->ImageQuality"); //$binaryThumbnail = ob_get_contents(); //ob_end_clean(); } else if ($ext == "gif") { imagegif ($normal, '', "$this->ImageQuality"); } else if ($ext == "png") { imagepng ($normal, '', "$this->ImageQuality"); } imagedestroy($source); } } function Save() { else { } } } ?>