| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

16-08-2009, 21:05
|
|
florian1x
Registrierter Benutzer
|
|
Registriert seit: May 2006
Beiträge: 185
|
|
fehler mit klasse
Also ich habe mir gedacht ich schreibe mir eine Thumbnail-klasse
PHP-Code:
<?php
class Thumbnail{
private $width; //Breite des Thumbnails
private $heigth; //Höhe des Thumbnails
private $file; //Originaldatei
private $fileName; //Name der Originaldatei
private $filePath; //Pfad zur Originaldatei
private $fileWidth; //Breite der Originaldatei
private $fileHeigth; //Höhe der Originaldatei
private $fileFormat; //Format der Originaldatei
private $thumbnail; //erzeugtes thumnail
private $thumbPath; //Pfad zu den erzeugten Thumbnails
private $errors = array(); // Fehlerarray für kritische Fehler
public function __construct() {
setWidth(0);
setHeigth(0);
setFilePath('');
setThumbPath('');
setFileName('unknown');
}
public function setWidth($newWidth, $keepSolution=false){
if(!is_int($newWidth))
return false;
if($keepSolution){
$faktor = $newWidth/$width;
setFileWidth(intval($heigth*$faktor));
}
$width = $newWidth;
}
public function getWidth(){
return $width;
}
public function setHeigth($newHeigth, $keepSolution=false){
if(!is_int($newHeigth))
return false;
if($keepSolution){
$faktor = $newHeigth/$heigth;
setFileWidth(intval($width*$faktor));
}
$heigth = $newHeigth;
}
public function getHeigth(){
return $heigth;
}
public function setFilePath($newFilePath){
if(!is_dir($newFilePath)){
return false;
}
$filePath = $newFilePath;
}
public function getFilePath(){
return $filePath;
}
public function setThumbPath($newThumbPath){
if(!is_dir($thumbPath)){
return false;
}
$thumbPath = $newThumbPath;
}
public function getThumbPath(){
return $thumbPath;
}
public function setFileName($newFileName){
$fileName = $newFileName;
}
public function getFileName(){
return $fileName;
}
public function getFileHeigth(){
return $fileHeigth;
}
public function getFileWidth(){
return $fileWidth;
}
public function getErrors(){
return $errors;
}
private function load(){
if (!file_exists ($filePath.$fileName)) {
$errors[] = "Datei nicht vorhanden.";
return false;
}
$data = GetImageSize($filePath.$fileName); //Datentyp ermitteln
$fileWidth = $data[0];
$fileHeigth = $data[1];
$fileFormat = $data[2];
switch ($fileFormat) {
case 1: //GIF
$file = ImageCreateFromGIF ($filePath.$fileName);
break;
case 2: //JPG
$file = ImageCreateFromJPEG($filePath.$fileName);
break;
case 3: //PNG
$file = ImageCreateFromPNG($filePath.$fileName);
break;
default:
$errors[] = "Kein gültiger Datentyp.";
return false;
break;
}
}
public function create(){
if(count($errors) or (!$width && !$height)){
return false;
}
setWidth(getFileWidth());
setHeigth(getFiletHeigth());
$thumbnail = ImageCreateTrueColor($width, $height);
ImageCopyResampled ( $thumbnail, $file,
0, 0, 0, 0,
$width, $height, $fileWidth, $fileHeigth);
header('Content-Type: image/png');
imagepng($thumbnail);
imagedestroy($thumb);
}
}
$thumb = new Thumbnail();
$thumb->setFilePath('Party%20bilder/mein%2019er/gs2.3/images');
$thumb->setFileFilename('DSC00231.gif');
$thumb->setWidth(200);
$thumb->load();
$thumb->create();
?>
Nun habe ich alles ersma runtergeschrieben weil es grad spass gemacht hat.
Und wollte jetzt nach und nach die fehler ausmerzen.
Beim aufrufen kommt jedoch folgender fehler
Zitat:
|
Fatal error: Call to undefined function setWidth() in /usr/export/www/vhosts/funnetwork/hosting/florianweinhold/temp/thumbnail.class.php on line 17
|
und ich weiss nicht warum der mir sagt dass es die Funktion nicht gibt.
Name stimmt
Parameteranzahl stimmt (2. Parameter ist ja Optional)
könnt ihr mir sagen warum der mir diese fehlernachricht gibt?
die Klasse ist übrigens noch nicht fertig
|

16-08-2009, 21:11
|
|
ezkimo
Registrierter Benutzer
|
|
Registriert seit: Apr 2005
Ort: Beckum / Westf.
Beiträge: 211
|
|
Öhm ... schaut so aus, als wenn das mit den Klassen bzw. Referenzierung innerhalb der Klassen noch nicht so richtig verinnerlicht wurde. Schau Dir doch noch mal die Basics an und achte explizit auf $this.
|

16-08-2009, 21:25
|
|
florian1x
Registrierter Benutzer
|
|
Registriert seit: May 2006
Beiträge: 185
|
|
ok hab den fehler weg
ich war auch zu blös
PHP-Code:
<?php class Thumbnail{ private $width; //Breite des Thumbnails private $heigth; //Höhe des Thumbnails private $file; //Originaldatei private $fileName; //Name der Originaldatei private $filePath; //Pfad zur Originaldatei private $fileWidth; //Breite der Originaldatei private $fileHeigth; //Höhe der Originaldatei private $fileFormat; //Format der Originaldatei private $thumbnail; //erzeugtes thumnail private $thumbPath; //Pfad zu den erzeugten Thumbnails
private $errors = array(); // Fehlerarray für kritische Fehler public function __construct() { $this->setWidth(0); $this->setHeigth(0); $this->setFilePath(''); $this->setThumbPath(''); $this->setFileName('unknown'); } public function setWidth($width, $keepSolution=false){ if(!is_int($newWidth)) return false; if($keepSolution){ $faktor = $width/$this->$width; $this->setFileWidth(intval($heigth*$faktor)); } $this->$width = $width; } public function getWidth(){ return $width; } public function setHeigth($heigth, $keepSolution=false){ if(!is_int($newHeigth)) return false; if($keepSolution){ $faktor = $heigth/$this->$heigth; setFileWidth(intval($width*$faktor)); } $this->$heigth = $heigth; } public function getHeigth(){ return $heigth; } public function setFilePath($filePath){ if(!is_dir($filePath)){ return false; } $this->$filePath = $filePath; } public function getFilePath(){ return $filePath; }
public function setThumbPath($thumbPath){ if(!is_dir($thumbPath)){ return false; } $this->$thumbPath = $thumbPath; } public function getThumbPath(){ return $thumbPath; } public function setFileName($fileName){ $this->$fileName = $fileName; } public function getFileName(){ return $fileName; } public function getFileHeigth(){ return $fileHeigth; } public function getFileWidth(){ return $fileWidth; } public function getErrors(){ return $errors; } private function load(){ if (!file_exists ($filePath.$fileName)) { $errors[] = "Datei nicht vorhanden."; return false; } $data = GetImageSize($filePath.$fileName); //Datentyp ermitteln $fileWidth = $data[0]; $fileHeigth = $data[1]; $fileFormat = $data[2]; switch ($fileFormat) { case 1: //GIF $file = ImageCreateFromGIF ($filePath.$fileName); break; case 2: //JPG $file = ImageCreateFromJPEG($filePath.$fileName); break; case 3: //PNG $file = ImageCreateFromPNG($filePath.$fileName); break; default: $errors[] = "Kein gültiger Datentyp."; return false; break; } } public function create(){ $this->load; if(count($errors) or (!$width && !$height)){ return false; } $this->setWidth(getFileWidth()); $this->setHeigth(getFiletHeigth()); $thumbnail = ImageCreateTrueColor($width, $height); ImageCopyResampled ( $thumbnail, $file, 0, 0, 0, 0, $width, $height, $fileWidth, $fileHeigth); header('Content-Type: image/png'); imagepng($thumbnail); imagedestroy($thumb); } }
$thumb = new Thumbnail(); $thumb->setFilePath('Party%20bilder/mein%2019er/gs2.3/images'); $thumb->setFileName('DSC00231.gif'); print_r($thumb->getErrors()); $thumb->setWidth(200); $thumb->create();
?>
Geändert von florian1x (16-08-2009 um 21:36 Uhr)
|

16-08-2009, 21:30
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
PHP-Code:
public function __construct() {
$this -> setWidth(0);
...
}
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

16-08-2009, 23:39
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Der Konstruktor ist überflüssig, weil alle Vorbesetzungen schon bei der Eigenschaftsdeklaration vorgenommen werden können.
|

17-08-2009, 23:45
|
|
florian1x
Registrierter Benutzer
|
|
Registriert seit: May 2006
Beiträge: 185
|
|
Ja ist mir auch irgendwie aufgefallen ^^.
Hab die Klasse auch nochmal neugeschrieben
und etwas vereinfacht dargestellt.
Funktioniert jetzt auch richtig
nachdem ich mich nochmal mit klassen ausseinander gesetzt habe
Die Klasse darf frei verwendet und bearbeitet werden.
bin natürlich für verbesserungsvorschläge offen
werde die Klasse aber auch nochma in einem andern thread posten.
passt dann nur nicht ins Developer forum
PHP-Code:
<?php
/*####################################################################
class: Thumbnail
Description: Class to handle thumbnails on an easy way.
Author: Florian Weinhold
latest update: 17th. August 2009
Version: 1.0.0
notice: comments in german
#####################################################################*/
class Thumbnail{
private $error; // Variable zum Speichern wichtiger Fehler
private $thumb; // Bildkopie
//Konstanten
const GIF = 1;
const JPG = 2;
const PNG = 3;
//Konstruktor
public function __construct($imageUrl) {
$this->error='';
$this->thumb = $this->load($imageUrl);
}
//Get-Methoden
/*
Gibt den letzten bekannten Fehler zurück
*/
public function getError(){
if($this->error=='')
return $this->error;
return false;
}
//sonstige Methoden
/*
Funktion zum Laden der originalen Bilddatei
param $imageUrl: url zum Original
return: gibt den Bezeichner auf das Original zurück
notice: wenn das Original nicht existiert wird false zurück gegeben
*/
public function load($imageUrl){
if (!file_exists ($imageUrl)) {
return false;
}
//Datentyp ermitteln
//und Bild erzeugen
//anschließend zurück geben
$data = GetImageSize($imageUrl);
switch ($data[2]) {
case 1: //GIF
return ImageCreateFromGIF ($imageUrl);
break;
case 2: //JPG
return ImageCreateFromJPEG($imageUrl);
break;
case 3: //PNG
return ImageCreateFromPNG($imageUrl);
break;
default:
$this->error = "Load Error: invalide data type.";
return false;
break;
}
}
/*
Ändert die Dimensionen des Bildes
param $x: Breite
param $y (optional): Höhe
notice: Wenn die Höhe nicht mit angegeben wird, passt sie sich automatisch
mit an.
Wenn x und y nicht gesetzt sind wird false zurück gegeben.
*/
public function resize($x, $y=false){
if(!$x && !$y){
return false;
$this->errors[] = "invalide data type.";
}
//Aktuelle Größe zwischenspeichern
$oldX=ImageSX($this->thumb);
$oldY=ImageSY($this->thumb);
//Wenn die Höhe nicht mit angegeben wurde
//wird die Höhe proportional zu Breite skaliert.
if(!$y)
$y=$oldY*$x/$oldX;
$tmp = ImageCreateTrueColor($x, $y);
ImageCopyResampled ( $tmp, $this->thumb,
0, 0, 0, 0,
$x, $y,
$oldX, $oldY);
$this->thumb = $tmp;
}
/*
Stellt das Bild dar.
param type (optional): Ausgabetyp
notice: gibt false zurück, wenn kein passender Typ angegeben wird.
*/
public function run($type=Thumbnail::JPG){
switch ($type) {
case 1: //GIF
header('Content-type: image/gif');
imagegif($this->thumb);
break;
case 2: //JPG
header ("Content-type: image/jpg");
imagejpeg($this->thumb);
break;
case 3: //PNG
header ("Content-type: image/png");
imagepng($this->thumb);
break;
default:
$this->error = "Run Error: invalide data type.";
return false;
break;
}
imagedestroy($this->thumb);
}
/*
Speichert das Bild ab.
param $filename: Dateiname unter dem die Datei gespeichert wird
param $type(optional): Ausgabetyp
*/
public function save($filename, $type=Thumbnail::JPG, $path='./'){
if(!is_dir($path)){
$this->error = "Save Error: directory doesn't exist.";
return false;
}
switch ($type) {
case 1: //GIF
imagegif($this->thumb, $path.$filename);
break;
case 2: //JPG
imagejpeg($this->thumb, $path.$filename);
break;
case 3: //PNG
imagepng($this->thumb, $path.$filename);
break;
default:
$this->error = "Save Error: invalide data type.";
return false;
break;
imagedestroy($this->thumb);
}
}
}
/*#################################################
# Examples #
#################################################*/
$t = new Thumbnail('DSC00232.JPG'); //load Image
//$t->resize(400); //Resize Image
//$t->run(); //Run as JPG
//$t->run(Thumbnail::GIF); or $t->run(1); //Run as GIF
//$t->run(Thumbnail::JPG); or $t->run(2); //Run as JPG
//$t->run(Thumbnail::PNG); or $t->run(3); //Run as PNG
//$t->save('filename'); //save as jpg in current dir
//$t->save('filename', Thumbnail::PNG); //save as png in current dir
//$t->save('filename', Thumbnail::GIF, 'path'); //save as png in path
?>
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|