Signatur
Beschreibung
imagecopy() überträgt einen rechteckigen Bereich aus dem Quellbild (src_image) an eine bestimmte Position im Zielbild (dst_image). Dabei werden Pixeldaten 1:1 kopiert – ohne Skalierung, ohne Farbmischung (anders als bei imagecopymerge()).
Die Funktion ist nützlich, wenn man Bilder zusammensetzen möchte (z. B. Wasserzeichen, Sprites, Collage-Montagen) oder einen Ausschnitt eines Bildes in ein anderes übertragen möchte. Der Quell- und Zielbereich werden jeweils über die Koordinaten und die Breite/Höhe des Quellbereichs definiert.
Transparente Pixel in Palette-Bildern (z. B. PNG-8) werden direkt kopiert; bei True-Color-Bildern mit Alpha-Kanal wird die Alpha-Information mitübertragen. Soll Transparenz korrekt zusammengemischt werden, empfiehlt sich stattdessen imagecopy() mit zuvor gesetztem imagealphablending() oder alternativ imagecopymerge().
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $dst_image Pflicht | GdImage | Das Ziel-Bildobjekt, in das der Ausschnitt eingefügt wird. | |
| $src_image Pflicht | GdImage | Das Quell-Bildobjekt, aus dem der Ausschnitt kopiert wird. | |
| $dst_x Pflicht | int | X-Koordinate (in Pixeln) im Zielbild, ab der der Ausschnitt eingefügt wird. | |
| $dst_y Pflicht | int | Y-Koordinate (in Pixeln) im Zielbild, ab der der Ausschnitt eingefügt wird. | |
| $src_x Pflicht | int | X-Koordinate (in Pixeln) im Quellbild, ab der der Ausschnitt beginnt. | |
| $src_y Pflicht | int | Y-Koordinate (in Pixeln) im Quellbild, ab der der Ausschnitt beginnt. | |
| $src_width Pflicht | int | Breite (in Pixeln) des zu kopierenden Ausschnitts aus dem Quellbild. | |
| $src_height Pflicht | int | Höhe (in Pixeln) des zu kopierenden Ausschnitts aus dem Quellbild. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler.Beispiele
Einfaches Zusammensetzen zweier Bilder
<?php
// Zielbild erstellen (400x200 Pixel, weißer Hintergrund)
$dst = imagecreatetruecolor(400, 200);
$white = imagecolorallocate($dst, 255, 255, 255);
imagefill($dst, 0, 0, $white);
// Quellbild laden (z. B. ein 200x200 großes PNG)
$src = imagecreatefrompng('logo.png');
// Den kompletten Quellinhalt (200x200) an Position (100, 0) ins Zielbild kopieren
imagecopy($dst, $src, 100, 0, 0, 0, 200, 200);
// Ergebnis ausgeben
header('Content-Type: image/png');
imagepng($dst);
imagedestroy($dst);
imagedestroy($src);
Ausschnitt eines Quellbildes kopieren
<?php
// Quellbild laden (z. B. ein Sprite-Sheet mit 512x512 Pixeln)
$src = imagecreatefrompng('spritesheet.png');
// Zielbild anlegen (64x64 Pixel für ein einzelnes Sprite)
$dst = imagecreatetruecolor(64, 64);
// Sprite ab Position (128, 64) mit Größe 64x64 aus dem Sprite-Sheet kopieren
imagecopy($dst, $src, 0, 0, 128, 64, 64, 64);
// Ergebnis als PNG ausgeben
header('Content-Type: image/png');
imagepng($dst);
imagedestroy($src);
imagedestroy($dst);
// Wichtig · Fallstricke
Transparenz: Bei True-Color-Bildern mit Alpha-Kanal sollte vor dem Kopieren imagealphablending($dst, false) und imagesavealpha($dst, true) gesetzt werden, damit Transparenzinformationen korrekt erhalten bleiben. Andernfalls kann es zu unerwünschten Farbmischungen kommen.
Keine Skalierung: imagecopy() skaliert den Ausschnitt nicht. Soll der Ausschnitt beim Kopieren in der Größe verändert werden, muss stattdessen imagecopyresampled() oder imagecopyresized() verwendet werden.
Ressourcenverwaltung: Ab PHP 8.0 werden Bilder als GdImage-Objekte repräsentiert. In älteren PHP-Versionen handelte es sich um Ressourcen vom Typ resource. Die Funktion selbst funktioniert in beiden Varianten identisch.