php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.12.2007, 21:53  
Erfahrener Benutzer
 
Benutzerbild von DER_Brain
 
Registriert seit: 18.04.2005
Beiträge: 1.541
PHP-Kenntnisse:
Fortgeschritten
DER_Brain ist zur Zeit noch ein unbeschriebenes Blatt
Standard Problem mit Image - Klasse

EDIT: War ja klar, den Fehler findet man zwei Minuten nach dem Post :-S

tut ma leid! Hab die Zeile im Quellcode markiert! es war das imagecreate... es sollte imagecreatetruecolor heißen :-S
lg Andi
___

Hallo.

Ich hab mal angefangen mir ne kleine Image Klasse zu schreiben (soll am Anfang halt nur Bild verkleinern + Wasserzeichen raufgeben sein).

Nun bin ich schon ziemlich bald auf Probleme gestoßen.

Hier mal der Quellcode (ich hab versucht ihn mal so gut es geht durchzukommentieren; Hab noch ned viel Erfahrung in OOP, vlt. siehts etwas unordentlich aus, hab mich aber bemüht -.-):

PHP-Code:
<?php
    error_reporting
("E_ALL");
    
ini_set("display_errors",1);
    
    
    class 
Image{
        private 
$path;            // String - Path for Output
        
private $type;            // String - JPEG / PNG / GIF
        
private $is_output false;        // Boolean - Is an output path set?
        
public $image;            // Ressource - Original Image
        
public $img_out;            // Ressource - Image for output
        
private $image_width;        // INT  - width of Original Image
        
private $image_height;        // INT  - height of Original Image
        
private $quality 100;        // INT  - Quality
        
        
public function __construct(){
            
// Maybe sometimes
        
}

        public function 
loadImage($path){    // Loads an Image
            
if(file_exists($path)){    // Does the file exist?
                
$type getimagesize($path);
                
                
$this->image_width $type[0];    // Image width
                
$this->image_height $type[1];    // Image height
                
                
if(preg_match("#jpeg#",strtolower($type['mime']))){    // JPG
                    
$image imagecreatefromjpeg($path);
                    
$this->type "JPEG";
                }
                if(
preg_match("#png#",strtolower($type['mime']))){    // PNG
                    
$image imagecreatefrompng($path);
                    
$this->type "PNG";
                }
                if(
preg_match("#gif#",strtolower($type['mime']))){    // GIF
                    
$image imagecreatefromgif($path);
                    
$this->type "GIF";
                }
            }
            else{
                return 
false;
            }
            
$this->image $image;    // Saves the ressource
            
return true;
        }
        
        public function 
makethumb($width,$height){    // Creates a thumbnail
            
if($this->image_width >= $this->image_height){    // 
                
$new_width $width;    // Calculate new Width
                
$new_height intval(($this->image_height $this->image_width ) * $new_width);    // Calculate new Height
            
}
            else{
                
// Hochformat;
                
$new_height $height;    //Calculate new height
                
$new_width intval(($this->image_width $this->image_height) * $new_height);    // Calculate new Width
            
}
            
            
            
$img imagecreatetruecolor($new_width$new_height);    // Create Picture with new dimensions
            
imagecopyresampled($img$this->image0000$new_width$new_height$this->image_width$this->image_height);    // Copy the image into the lower one 
            
$this->img_out $img;    // save thumbnail
        
}
        
        public function 
set_output_path($path){ // sets a path for output
            
$this->path $path;    // Sets the Path
            
$this->is_output true;    // Sets the var true
        
}
        
        public function 
set_quality($quality=100){    // Quality for output
            
$this->quality $quality;
        }
        
        public function 
out(){
            if(!
$this->is_output){    // If there's no path
                
return false;
            }
                        
// Mal zum Deutschen..: Derzeit noch keine Überprüfung, welcher Bildtyp ausgegeben werden soll.. zu Testzwecken nur JPG
            
imagejpeg($this->img_out,$this->path,$this->quality); // Save the image 
            
imagedestroy($this->img_out); // memory
            
return true;
        }
        
    }
    
    
$img = new Image(); // new instance
    
$img->loadImage("2.jpg"); // big pic
    
$img->set_output_path("fff1.jpg"); // output path
    
$img->makethumb(300,100); // Create thumbnail
    
$img->set_quality(80); // set Quality
    
if($img->out()){ // save it
        
print "Erfolgreich erstellt!";
    }
?>

Nun, wie ihr in den letzen Zeilen erkennen könnt
wird eine neue Instanz erstellt, das Image ("2.jpg") geladen, der Pfad zur Ausgabe ("fff1.jpg") gesetzt und ein Thumbnail generiert. Danach wird die Qualität festgelegt und das Bild wird gespeichert.


Das mit verkleinern funktioniert einwandfrei. Ebenso das Speichern.

Jedoch: Wenn man das Bild nun aufruft sieht das Ergebnis seltsam aus. Es scheint als würde das Thumbnail mit weniger Farben "erstellt".

Hat jemand eine Ahnung, woran das liegen könnte? Ich hab jetzt schon ein paar Seiten durchsucht, gefunden hab aber nicht wirklich was zu meinem Problem gefunden.

Hier der Link zur Verdeutlichung:

-entfernt-


Wäre toll, wenn da jem. drüber schaun könnte. Ich tappe bei der Lösung irgendwie im Dunkeln. Vlt. übersehe ich ja nur eine Kleinigkeit..?


lg
Andi
DER_Brain ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bilder Klasse snatch-ic Beitragsarchiv 1 13.06.2007 11:45
Problem mit MsSQL Klasse FireFIghter PHP Tipps 2006 6 04.10.2006 08:45
Problem mit BBcode [ img ] Kein Genie PHP Tipps 2006 23 29.09.2006 14:59
Problem mit Klasse b++ PHP Tipps 2006 5 26.08.2006 14:22
Problem mit OOP PHP Tipps 2005-2 5 01.09.2005 19:37
Problem mit mysql_fetch_array in Klasse PHP Tipps 2005-2 3 16.08.2005 09:14
[Erledigt] Problem mit Backslash Patrick Schwarz PHP Tipps 2005-2 5 26.07.2005 09:54
problem mit klasse zum registrieren Fraylman PHP Tipps 2005-2 5 05.07.2005 13:55
Problem mit einer rekursiven Funktion in einer Klasse ajo_silent PHP-Fortgeschrittene 6 13.06.2005 16:40
image problem Ohrwurm83 PHP Tipps 2004 3 31.10.2004 00:18
Problem beim Registrieren von Session-Variablen in Klasse zwelch PHP-Fortgeschrittene 6 18.10.2004 08:07
Klasse holt sich die Klasse PHP-Fortgeschrittene 9 07.10.2004 11:53
Problem bei einer Klasse mit "hat" beziehung PHP Tipps 2004 4 06.10.2004 21:29
Problem mit optionalen Parametern bei Funktion in Klasse RudiS PHP-Fortgeschrittene 6 24.09.2004 09:03
Klasse ändern UniQ PHP Tipps 2004 5 24.08.2004 14:46

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
image.newinstance, php image klasse, privatepath wird nicht durchsucht

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:12 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.