imagesetinterpolation
(PHP 5 >= 5.5.0, PHP 7, PHP 8)
imagesetinterpolation — 補間方法を設定する
説明
補間方法を設定します。これは、imagerotate() など GD のさまざまな関数のレンダリングに影響を及ぼします。
パラメータ
image
imagecreatetruecolor()のような画像作成関数が返す GdImage オブジェクト。
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
: 三角補間。
-
変更履歴
バージョン | 説明 |
---|---|
8.0.0 |
image は、
GdImage
クラスのインスタンスを期待するようになりました。
これより前のバージョンでは、有効な gd resource が期待されていました。
|
例
例1 imagesetinterpolation() の例
<?php
// 画像を読み込みます
$im = imagecreate(500, 500);
// デフォルトの補間方法は IMG_BILINEAR_FIXED ですが、これを
// 'Mitchell' フィルターに変更します
imagesetinterpolation($im, IMG_MITCHELL);
// $im の作業を続けます
?>
参考
- imagegetinterpolation() - 補間方法を取得する
+add a note
User Contributed Notes 1 note
shaun at slickdesign dot com dot au ¶
7 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 );
?>