Start · Sprachen · PHP · Referenz · imagesetinterpolation

imagesetinterpolation

Funktion

Legt die Interpolationsmethode für ein GD-Bild fest, die bei Skalierungs- und Rotationsoperationen verwendet wird.

seit PHP 5.5.0 Kategorie: image

Signatur

imagesetinterpolation(GdImage $image, int $method = IMG_BILINEAR_FIXED): bool

Beschreibung

imagesetinterpolation() bestimmt, welcher Algorithmus verwendet wird, wenn ein Bild skaliert, gedreht oder anderweitig geometrisch transformiert wird. Die gewählte Methode beeinflusst dabei direkt die Qualität und Geschwindigkeit der Ausgabe.

Verschiedene Interpolationsmethoden bieten unterschiedliche Kompromisse zwischen Qualität und Performance. So ist IMG_NEAREST_NEIGHBOUR sehr schnell, erzeugt aber bei Vergrößerungen oft ein pixeliges Ergebnis. Methoden wie IMG_BILINEAR_FIXED oder IMG_BICUBIC liefern glattere Ergebnisse auf Kosten von etwas mehr Rechenaufwand.

Die Funktion wirkt sich unter anderem auf imagescale() und imagerotate() aus. Sobald die Interpolationsmethode gesetzt ist, gilt sie für alle nachfolgenden Transformationen auf demselben Bild-Ressource-Objekt, bis sie erneut geändert wird.

Zu den häufig verwendeten Konstanten gehören: IMG_NEAREST_NEIGHBOUR, IMG_BILINEAR_FIXED (Standard), IMG_BICUBIC, IMG_BICUBIC_FIXED, IMG_BELL, IMG_BESSEL, IMG_BLACKMAN, IMG_BOX, IMG_BSPLINE, IMG_CATMULLROM, IMG_GAUSSIAN, IMG_GENERALIZED_CUBIC, IMG_HERMITE, IMG_HAMMING, IMG_HANNING, IMG_MITCHELL, IMG_POWER, IMG_QUADRATIC, IMG_SINC, IMG_TRIANGLE, IMG_WEIGHTED4.

Parameter

Name Typ Default Beschreibung
$image Pflicht GdImage Ein GD-Bildobjekt, das z. B. von imagecreatetruecolor() oder imagecreatefromjpeg() zurückgegeben wurde.
$method int IMG_BILINEAR_FIXED Die Interpolationsmethode als eine der IMG_*-Konstanten, z. B. IMG_NEAREST_NEIGHBOUR, IMG_BICUBIC oder IMG_BILINEAR_FIXED.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler (z. B. wenn eine ungültige Interpolationsmethode übergeben wurde).

Beispiele

Bild mit bikubischer Interpolation skalieren

<?php
// Originalbild laden
$src = imagecreatefromjpeg('foto.jpg');

// Bikubische Interpolation für bessere Qualität setzen
imagesetinterpolation($src, IMG_BICUBIC);

// Bild auf 300x200 Pixel skalieren
$skaliert = imagescale($src, 300, 200);

// Ergebnis als JPEG speichern
imagejpeg($skaliert, 'foto_skaliert.jpg', 90);

imagedestroy($src);
imagedestroy($skaliert);

echo 'Bild erfolgreich skaliert und gespeichert.';
Bild erfolgreich skaliert und gespeichert.

Vergleich: Nearest Neighbour vs. Bilinear bei Rotation

<?php
$src = imagecreatefromjpeg('logo.jpg');

// Variante 1: Schnelle, aber kantiger Rotation
imagesetinterpolation($src, IMG_NEAREST_NEIGHBOUR);
$rotiert1 = imagerotate($src, 45, 0);
imagejpeg($rotiert1, 'logo_nn.jpg');
imagedestroy($rotiert1);

// Variante 2: Glattere Rotation mit bilinearer Interpolation
imagesetinterpolation($src, IMG_BILINEAR_FIXED);
$rotiert2 = imagerotate($src, 45, 0);
imagejpeg($rotiert2, 'logo_bilinear.jpg');
imagedestroy($rotiert2);

imagedestroy($src);
echo 'Beide Rotationsvarianten gespeichert.';
Beide Rotationsvarianten gespeichert.

// Wichtig · Fallstricke

Leistungshinweis: Hochwertige Methoden wie IMG_BICUBIC oder IMG_SINC benötigen deutlich mehr CPU-Zeit als einfachere Methoden wie IMG_NEAREST_NEIGHBOUR. Für zeitkritische Massenverarbeitung empfiehlt sich daher ein Kompromiss, z. B. IMG_BILINEAR_FIXED.

Nur bei Truecolor-Bildern: Diese Funktion hat nur bei Truecolor-Bildern eine Wirkung. Paletten-Bilder (erzeugt mit imagecreate()) unterstützen keine Interpolation. Konvertieren Sie ggf. mit imagepalettetotruecolor().

Die Funktion wurde in PHP 5.5.0 eingeführt und ist ab PHP 8.0 mit dem Typ GdImage statt der alten resource-Typisierung ausgestattet.