Bilddatei kopieren und verkleinern
Möchten Sie in PHP eine Bilddatei gerne kopieren und gleichzeitig in der größe ändern, dann dürfte Ihnen folgender Quelltext weiterhelfen.
Diese Funktion kopiert eine Jpeg Bilddatei von der Quelle source zum Ziel dest mit einer maximalen Bildbreite bzw. Bildhöhe.
Die Funktion unterstützt in dem Beispiel nur *.jpg-Dateien. Eine Erweiterung auf *.tiff, *.gif, *.png, *.bmp ist aber keine Kunst, Es müssen lediglich >>ImageCreateFromJpeg($source);<< und >>imagejpeg($newPic, $dest);<< gegen die entsprechenden Funktionsaufrufe für eine andere Bilddatei getauscht werden.
Ist das Bild größer als $maxSize, so werden die Bildkoordinaten neu berechnet. Sind die Bildkoordinaten kleiner als die maximale Angabe, so wird nichts unternommen.
/** * @desc Holt eine Datei aus $source, berechnet die Seitenverhältnisse passend auf $maxSize neu, * und kopiert das Ergebnis nach $dest. * @param string $source : Quellpfad der Grafikdatei * @param string $dest : Zielpfad der neu zu erstellenden Datei * @param int $maxSize : Größe des Rechteckes, in welches die neue Bilddatei passen soll. * @return void */ function resizeImage( $source, $dest, $maxSize ) { // Bilddatein ermitteln $imgData = getimagesize($source); $origWidth = $imgData[0]; $origHeight = $imgData[1]; if( $imgData[2] == 2 ) // Wenn Datei JPG { /* Diese Kommentierung entfernen, wenn kleinere Bilder nicht vergrößert werden sollen if( $origHeight < $maxSize && origWidth < $maxSize ) // Größenänderung nur, wenn Bild größer als $maxSize ist { $newWidth = $origWidth; $newHeight = $origHeight; } else { */ if( $origHeight >= $origWidth ) // Wenn höher als breit { $newWidth = round( $origWidth / ($origHeight / $maxSize) ); $newHeight = $maxSize; } else // Wenn breiter als hoch { $newHeight = round( $origHeight / ($origWidth / $maxSize) ); $newWidth = $maxSize; } /* } */ // Größe ändern und unter $dest abspeichern $oldPic = ImageCreateFromJpeg($source); $newPic = ImageCreateTrueColor($newWidth,$newHeight); ImageCopyResized( $newPic, $oldPic, 0, 0, 0, 0, $newWidth, $newHeight, $origWidth, $origHeight ); imagejpeg($newPic, $dest); } }
// Memory Limit auf 128MB vergrößern ini_set('memory_limit', '128M'); /* Diesen Code einfach in den Kopfbereich des entsprechenden PHP Quelltextes einfügen um PHP mehr Speicher zu gönnen */
<?php // Beispielaufruf // Speicher erhöhen ini_set('memory_limit', '64M'); // Aufruf Kopiert die Datei vom Ziel zur Quelle mit den maximalen // Koordinaten von 600*600Pixel resizeImage("./quelle/bilddatei.jpg", "./ziel/bilddatei.jpg", 600); ?>