(PHP 5 >= 5.5.0, PHP 7, PHP 8)
imagecropauto — 利用可能なモードを指定して、画像を自動的にクロップする
$image
,$mode
= IMG_CROP_DEFAULT
,$threshold
= 0.5,$color
= -1
指定した mode
にしたがって、画像を自動的にクロップします。
この関数は、 現在のところ詳細な情報はありません。引数のリストのみが 記述されています。
image
imagecreatetruecolor()のような画像作成関数が返す GdImage オブジェクト。
mode
以下の定数のいずれか。
IMG_CROP_DEFAULT
IMG_CROP_TRANSPARENT
と同じです。
PHP 7.4.0 より前のバージョンでは、
PHP にバンドルされた libgd は、
画像に透過色がない場合に IMG_CROP_SIDES
にフォールバックしていました。
IMG_CROP_TRANSPARENT
IMG_CROP_BLACK
IMG_CROP_WHITE
IMG_CROP_SIDES
IMG_CROP_THRESHOLD
threshold
と
color
を用いてクロップします。
threshold
画像の色とクロップする色を比較する際に用いる許容誤差を、パーセントで指定します。 色の違いを判断する際には、RGBキューブ内での距離を用います。
IMG_CROP_THRESHOLD
モードのときにだけ利用します。
注意: PHP 7.4.0 より前のバージョンでは、 PHP にバンドルされていた libgd はやや異なるアルゴリズムを用いていました。 なので、同じ
threshold
を渡しても システムの libgd と PHP にバンドルされた libgd とは異なる結果が生成されていました。
color
RGB値あるいはパレットインデックスを指定します。
IMG_CROP_THRESHOLD
モードのときにだけ利用します。
成功した場合にクロップ後の画像オブジェクトを返します。
失敗した場合に false
を返します。
すべてクロップされてしまった場合は、
imagecrop() は false
を返します。
バージョン | 説明 |
---|---|
8.0.0 |
image は、
GdImage
クラスのインスタンスを期待するようになりました。
これより前のバージョンでは、resource が期待されていました。
|
8.0.0 | 成功時には、 この関数は GDImage クラスのインスタンスを返すようになりました。 これより前のバージョンでは、 resource を返していました。 |
7.4.0 |
PHP にバンドルされた imagecropauto() の振る舞いは、
システムにインストールされる libgd のそれと同じになりました。
つまり、IMG_CROP_DEFAULT
が IMG_CROP_SIDES にフォールバックすることはななくなり、
しきい値によるクロップは、
システムにインストールされる libgd のアルゴリズムと同じものを使うようになりました。
|
7.4.0 |
mode パラメータのデフォルト値が
IMG_CROP_AUTO に変更されました。
これより前のバージョンでは、デフォルト値は
-1 で、IMG_CROP_DEFAULT に対応しています。
しかし、-1 を渡すのは非推奨になりました。
|
例1 自動クロップの適切な処理
戻り値のところで説明したとおり、全部クロップしてしまったときに
imagecropauto() が返す値は false
となります。
この例では、クロップする部分がある場合にだけ画像オブジェクト
$im
を自動クロップします。
それ以外の場合は、元の画像をそのまま使います。
<?php
$cropped = imagecropauto($im, IMG_CROP_DEFAULT);
if ($cropped !== false) { // 新しい画像オブジェクトが戻された場合にだけ
imagedestroy($im); // 元の画像を破棄して
$im = $cropped; // クロップ後の画像を $im に代入します
}
?>