|
Sendet einen HTTP-
Kopiert einen Bildausschnitt
Erzeugt ein neues Bild im JPEG-
Erzeugt ein neues Bild im PNG-
Ausgabe des Bildes im Browser oder als Datei
Ermittelt die Bild-
Ermittelt die Bild- |
Tutorials - Fortgeschritten - Bilder und Thumbnails - imageCopyTutorials - FortgeschrittenBilder und Thumbnails: imageCopy
Nun sind wir bereit, ein Bild über ein anderes Bild zu kopieren. Zuerst öffnen wir 2 Bilder - einmal das Bild der Wiese und eine Grafik einer Sonne als PNG, das Tranparenz besitzt und so schön darüber gelegt werden kann. Die Bilder werden in 2 Variablen gespeichert. Den Rest erledigt imageCopy(). imageCopy() wird geläufig so definiert: imageCopy(dst_im, src_im, dst_x, dst_y, src_x, src_y, src_w, src_h) Übersetzt:
<?php header("Content-Type: image/jpeg"); $Wiese = imageCreateFromJPEG("images/wiese.jpg"); $Sonne = imageCreateFromPNG("images/sonne.png"); imageCopy($Wiese, $Sonne, 0, 0, /* imagecopy() an die Stelle ( 0, 0) in $Wiese, */ 0, 0, /* der zu kopierende Bereich beginnt in $Sonne bei ( 0, 0) */ 96, 90); /* und ist 96 Pixel breit und 90 Pixel hoch */ imageJPEG($Wiese); ?> Und man kann leicht den Überblick verlieren. Aber es führt vorerst kein Weg vorbei. Wollen wir nun die Sonne in die Mitte rücken, müssen wir uns überlegen, wie weit der Abstand zum linken Rand sein soll, denn eine "zentriert"-Einkopierfunktion gibt es nicht (oder ich kenne sie nicht). Das Zielbild ($Wiese) hat eine Breite von 500. Das Quellbild ($Sonne) hat eine Breite von 96. Das Bild muss nun also an die Stelle (500 / 2) - (96 / 2) = 202 <?php header("Content-Type: image/jpeg"); $Wiese = imageCreateFromJPEG("images/wiese.jpg"); $Sonne = imageCreateFromPNG("images/sonne.png"); imageCopy($Wiese, $Sonne, 202, 0, /* imagecopy() an die Stelle ( 202, 0) in $Wiese, */ 0, 0, /* der zu kopierende Bereich beginnt in $Sonne bei ( 0, 0) */ 96, 90); /* und ist 96 Pixel breit und 90 Pixel hoch */ imageJPEG($Wiese); ?> Was aber wenn man die Breiten nicht kennt ? Man lässt PHP die Breiten und Höhen zurückgeben:
<?php $Wiese = imageCreateFromJPEG("images/wiese.jpg"); $wieseBreite = imageSX($Wiese); $wieseHoehe = imageSY($Wiese); echo "Format Wiese: $wieseBreite x $wieseHoehe Pixel"; ?> <?php header("Content-Type: image/jpeg"); $Wiese = imageCreateFromJPEG("images/wiese.jpg"); $Sonne = imageCreateFromPNG("images/sonne.png"); $WieseX = imageSX($Wiese); $SonneX = imageSX($Sonne); $SonneY = imageSY($Sonne); imageCopy($Wiese, $Sonne, ($WieseX / 2 - $SonneX / 2), 0, 0, 0, $SonneX, $SonneY); imageJPEG($Wiese); ?> |