[Tipp] Serverseitiges image resize beim Upload

Tipps zur Forensoftware phpBB 3.0.x
Gesperrt
Benutzeravatar
Mahony
Site Admin
Site Admin
Beiträge: 792
Registriert: 3. Dez 2006 22:09
Hat sich bedankt: 22 Mal
Danksagung erhalten: 6 Mal

[Tipp] Serverseitiges image resize beim Upload

Beitrag von Mahony »

Hallo
Hier mal ein kleines Snippet um Bilder die im Forum hoch geladen werden automatisch auf eine vorgegebene Größe, Serverseitig, zu verringern (getestet mit phpBB3.0.6).

Öffne die Datei includes/functions_upload.php

Suche

Code: Alles auswählen

function move_file($destination, $overwrite = false, $skip_image_check = false, $chmod = false)
Füge den Code (die Funktion) davor ein

Code: Alles auswählen

    /**
    * Resize images with the true diemensions (800*600)
    */
    function resize_images()
    {
       if ( $this->is_image() ) {
       $limite_largeur = "800px";
       $limite_hauteur = "600px";
       $size = getimagesize($this->destination_file);
       $largeur = $size[0];
       $hauteur = $size[1];
       if($hauteur > $limite_hauteur OR $largeur > $limite_largeur)
       {
       if($largeur > $limite_largeur)
       {
       $hauteur = $hauteur / ($largeur / $limite_largeur);
       $largeur = $limite_largeur;
       }
       if($hauteur > $limite_hauteur)
       {
       $largeur = $largeur / ($hauteur / $limite_hauteur);
       $hauteur = $limite_hauteur;
       }
       
       $destination = imagecreatetruecolor($largeur, $hauteur);
       if ( $this->extension == "jpg" || $this->extension == "jpeg" ) $source = imagecreatefromjpeg($this->destination_file);
       elseif ( $this->extension == "png" ) $source = imagecreatefrompng($this->destination_file);
       elseif ( $this->extension == "gif" ) $source = imagecreatefromgif($this->destination_file);
                
       imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur, $hauteur, $size[0], $size[1]);
       if ( $this->extension == "jpg" || $this->extension == "jpeg" ) imagejpeg($destination, $this->destination_file);
       elseif ( $this->extension == "png" ) imagepng($destination, $this->destination_file);
       elseif ( $this->extension == "gif" ) imagegif($destination, $this->destination_file);
       }
    }
    } 
Suche

Code: Alles auswählen

if (sizeof($this->error))
			{
				return false;
			}

			phpbb_chmod($this->destination_file, $chmod);
füge davor ein

Code: Alles auswählen

if ( $this->is_image() )
            {
                $this->resize_images();
            }
Mit dieser Änderung, werden im Forum hoch geladene Bilder Serverseitig auf die Größe 800x600 reduziert (egal, wie groß sie vorher waren).

Möchte man andere Größen, dann muss man folgendes in der Funktion ändern:

Code: Alles auswählen

$limite_largeur = "800px";
$limite_hauteur = "600px";
also anstelle von 800px und 600px, die gewünschten Werte eintragen.


Grüße: Mahony
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
Klug ist, wer nur die Hälfte von dem glaubt, was er hört. Weise ist, wer erkennt, welche Hälfte richtig ist.

Bild
Gesperrt