(PHP 5 >= 5.5.0, PHP 7, PHP 8)
imagesetinterpolation — Set the interpolation method
Sets the interpolation method, setting an interpolation method affects the rendering of various functions in GD, such as the imagerotate() function.
image
A GdImage object, returned by one of the image creation functions, such as imagecreatetruecolor() .
method
The interpolation method, which can be one of the following:
IMG_BELL
: Bell filter.
IMG_BESSEL
: Bessel filter.
IMG_BICUBIC
: Bicubic interpolation.
IMG_BICUBIC_FIXED
: Fixed point implementation of the bicubic interpolation.
IMG_BILINEAR_FIXED
: Fixed point implementation of the bilinear interpolation (default (also on image creation)
).
IMG_BLACKMAN
: Blackman window function.
IMG_BOX
: Box blur filter.
IMG_BSPLINE
: Spline interpolation.
IMG_CATMULLROM
: Cubic Hermite spline interpolation.
IMG_GAUSSIAN
: Gaussian function.
IMG_GENERALIZED_CUBIC
: Generalized cubic spline fractal interpolation.
IMG_HERMITE
: Hermite interpolation.
IMG_HAMMING
: Hamming filter.
IMG_HANNING
: Hanning filter.
IMG_MITCHELL
: Mitchell filter.
IMG_POWER
: Power interpolation.
IMG_QUADRATIC
: Inverse quadratic interpolation.
IMG_SINC
: Sinc function.
IMG_NEAREST_NEIGHBOUR
: Nearest neighbour interpolation.
IMG_WEIGHTED4
: Weighting filter.
IMG_TRIANGLE
: Triangle interpolation.
Version | Description |
---|---|
8.0.0 |
image expects a GdImage
instance now; previously, a valid gd resource was expected.
|
Example #1 imagesetinterpolation() example
<?php
// Load an image
$im = imagecreate(500, 500);
// By default interpolation is IMG_BILINEAR_FIXED, switch
// to use the 'Mitchell' filter:
imagesetinterpolation($im, IMG_MITCHELL);
// Continue to work with $im ...
?>
Changing the interpolation method affects the following functions when rendering:
Setting the interpolation does not carry through to any images created by imageaffine() or imagerotate(). It defaults to IMG_BILINEAR_FIXED and would need to be set on each generated image as required.
<?php
imagesetinterpolation( $image, IMG_NEAREST_NEIGHBOUR );
// Rotated using IMG_NEAREST_NEIGHBOUR
$rotated = imagerotate( $image, 45, $transparent );
// Rotated using IMG_BILINEAR_FIXED
$rotated_again = imagerotate( $rotated, 45, $transparent );
?>
Setting the interpolation to IMG_NEAREST_NEIGHBOUR can help to preserve details and prevent sampling issues when rotating an image at 90 degree increments, including when rotating clockwise.
<?php
// Rotated image can appear blurred and on a slight angle.
$rotated = imagerotate( $image, -360, $transparent );
// Similar to starting Image although it may still show a background or be on a slight angle.
imagesetinterpolation( $image, IMG_NEAREST_NEIGHBOUR );
$rotated = imagerotate( $image, -360, $transparent );
?>