PHP freie class für bilder upload, resize und thumbnails?

Blackbenji

Lieutenant
Registriert
Nov. 2009
Beiträge
565
hallo,

ich suche eine möglichst fertige class die sich mit bildern beschäftig und dabei folgende funktionen bietet:
- hochladen
- resize (falls notwendig)
- thumbnails

bildquelle ist aktuell jpg, gerne aber auch png, wobei hier zb transparenz und resize/thumbnail nicht immer 100% funktionieren.

hat da vielleicht jemand einen tipp für mich?
 
Wie sollen die Bilder gespeichert werden? In einer DB oder normal auf der HDD?
 
So inzwischen habe ich was fertig bekommen, was jpeg, gif und png dateien hochladen und verkleinern kann, sogar gif und png mit transparenz ist kein problem.

PHP:
    private function resizeJPG($width, $height, $imageWithPath, $filename)
    {
        $compression = 100;
        $img = imagecreatefromjpeg( $imageWithPath );
        $new_image = imagecreatetruecolor($width, $height);
        imagecopyresampled($new_image, $img, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
        $this->image = $new_image;
        imagejpeg($new_image, self::thumbnail_path . $filename, $compression);
    }

    private function resizePNG($width, $height, $imageWithPath, $filename)
    {
        $img = imagecreatefrompng( $imageWithPath );
        $tmp_img = imagecreatetruecolor( $width, $height );
        imagealphablending($tmp_img, false);
        imagesavealpha($tmp_img,true);
        $transparent = imagecolorallocatealpha($tmp_img, 255, 255, 255, 127);
        imagefilledrectangle($tmp_img, 0, 0, $width, $height, $transparent);
        imagecopyresampled($tmp_img, $img, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight() );
        imagepng( $tmp_img, self::thumbnail_path . $filename );
    }

    private function resizeGIF($width, $height, $imageWithPath, $filename)
    {
        $img = imagecreatefromgif( $imageWithPath );
        $tmp_img = imagecreatetruecolor($width, $height);
        $trnprt_indx = imagecolortransparent( $imageWithPath );
        if ($trnprt_indx >= 0) {
            $trnprt_color    = imagecolorsforindex($imageWithPath, $trnprt_indx);
            $trnprt_indx    = imagecolorallocate($tmp_img, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);
            imagefill($tmp_img, 0, 0, $trnprt_indx);
            imagecolortransparent($tmp_img, $trnprt_indx);
        }
        imagecopyresampled($tmp_img, $img, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
        imagegif( $tmp_img, self::thumbnail_path . $filename );
    }

Bei der GIF Erstellung gibt es jedoch im Logfile eine Warning:

# $trnprt_indx = imagecolortransparent( $imageWithPath );
imagecolortransparent() expects parameter 1 to be resource, string given
# $trnprt_color = imagecolorsforindex($imageWithPath, $trnprt_indx);
imagecolorsforindex() expects parameter 1 to be resource, string given

Wenn ich $trnprt_indx in ein var_dump schicke, bekomme ich immer NULL zurück.

Jemand vielleicht eine Idee wodran es liegen kann?
 
Die Fehlermeldungen sagen dir doch direkt was du falsch gemacht hast :rolleyes:
Du rufst die Funktion imagecolortransparent mit einem String als Parameter auf, die Funktion wünscht sich aber eine Ressource, also vermutlich deine $img Variable. Da du der Funktion die falschen Parameter gibst, gibt sie dir eben ein null zurück.

Der Fehler war sich zu wundern, warum $trnprt_indx immer NULL ist, es denn es ist das Ergebnis eines fehlerhaften Funktionsaufrufs, du musst aber die Ursache suchen bzw. beheben.
 
ice-breaker schrieb:
Die Fehlermeldungen sagen dir doch direkt was du falsch gemacht hast :rolleyes:
Du rufst die Funktion imagecolortransparent mit einem String als Parameter auf, die Funktion wünscht sich aber eine Ressource, also vermutlich deine $img Variable. Da du der Funktion die falschen Parameter gibst, gibt sie dir eben ein null zurück.

Der Fehler war sich zu wundern, warum $trnprt_indx immer NULL ist, es denn es ist das Ergebnis eines fehlerhaften Funktionsaufrufs, du musst aber die Ursache suchen bzw. beheben.

danke, mein fehler war, dass ich nur den bild-path angegeben habe.
richtig wäre aber $img zu übergeben, in beiden fällen.

funktioniert nun!
 

Ähnliche Themen

Zurück
Oben