Start · Sprachen · PHP · Referenz · imagecopy

imagecopy

Funktion

Kopiert einen rechteckigen Ausschnitt aus einem Quellbild in ein Zielbild.

seit PHP 4.0.0 Kategorie: image

Signatur

imagecopy(GdImage $dst_image, GdImage $src_image, int $dst_x, int $dst_y, int $src_x, int $src_y, int $src_width, int $src_height): bool

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

Typ
bool
Beschreibung
Gibt 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.