imagesetinterpolation
(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
-
由图象创建函数(例如imagecreatetruecolor())返回的 GdImage 对象。
-
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.
-
返回值
成功时返回 true
, 或者在失败时返回 false
。
更新日志
版本 | 说明 |
---|---|
8.0.0 |
image expects a GdImage
instance now; previously, a resource was expected.
|
范例
示例 #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:
参见
- imagegetinterpolation() - Get the interpolation method

User Contributed Notes 1 note
shaun at slickdesign dot com dot au ¶
4 years ago
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 );
?>
备份地址:http://www.lvesu.com/blog/php/function.imagesetinterpolation.php