| Titel: | PHP Bild kopieren und verkleinern | |
| Beschreibung: | Wie man in PHP Bilder kopiert und und verkleinert | |
| Kategorie: | Programmierung | |
| Unterkategorie | PHP | |
| Benötigtes Fachwissen: | Anfänger | |
| Artikel überarbeiten: | PHP Bild kopieren und verkleinern | |
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); } }
Sollte dies zutreffen, so muss PHP mehr Speicherplatz zugewiesen werden. Dieser ist normalerweise bei 16MB oder 32MB festgelegt. Erhöhen Sie den Speicher einfach. Auf wieviel ist natürlich abhängig von der Speichermenge die Ihnen zur Verfügung steht. 64MB, 128MB oder 256MB, sollten jedoch ausreichen.
// 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); ?>