imagesetinterpolation

(PHP 5 >= 5.5.0, PHP 7)

imagesetinterpolation補間方法を設定する

説明

bool imagesetinterpolation ( resource $image [, int $method = IMG_BILINEAR_FIXED ] )

補間方法を設定します。これは、imagerotate() など GD のさまざまな関数のレンダリングに影響を及ぼします。

パラメータ

image

imagecreatetruecolor() のような画像作成関数が返す画像リソース。

method

補間方法。次のいずれかで指定します。

  • IMG_BELL: Bell フィルター。
  • IMG_BESSEL: Bessel フィルター。
  • IMG_BICUBIC: 双三次補間。
  • IMG_BICUBIC_FIXED: 双三次補間の固定小数点実装。
  • IMG_BILINEAR_FIXED: 双直線補間の固定小数点実装 (デフォルト (画像作成時も含む))。
  • IMG_BLACKMAN: Blackman ウィンドウ関数。
  • IMG_BOX: Box blur フィルター。
  • IMG_BSPLINE: スプライン補間。
  • IMG_CATMULLROM: 三次元エルミートスプライン補間。
  • IMG_GAUSSIAN: ガウス関数。
  • IMG_GENERALIZED_CUBIC: 汎用三次元スプラインフラクタル補間。
  • IMG_HERMITE: エルミート補間。
  • IMG_HAMMING: ハミングフィルター。
  • IMG_HANNING: ハニングフィルター。
  • IMG_MITCHELL: Mitchell フィルター。
  • IMG_POWER: Power 補間。
  • IMG_QUADRATIC: 逆二次補間。
  • IMG_SINC: Sinc 関数。
  • IMG_NEAREST_NEIGHBOUR: 最近接補間。
  • IMG_WEIGHTED4: 重み付きフィルター。
  • IMG_TRIANGLE: 三角補間。

返り値

成功した場合に TRUE を、失敗した場合に FALSE を返します。

例1 imagesetinterpolation() の例

<?php
// 画像を読み込みます
$im imagecreate(500500);

// デフォルトの補間方法は IMG_BILINEAR_FIXED ですが、これを
// 'Mitchell' フィルターに変更します
imagesetinterpolation($imIMG_MITCHELL);

// $im の作業を続けます
?>

注意

補間方法を変更すると、これらの関数のレンダリングに影響を及ぼします。

add a note add a note

User Contributed Notes 1 note

up
0
shaun at slickdesign dot com dot au
13 days 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 );
?>
To Top