ConFoo Montreal 2017 Calling for Papers

imagecropauto

(PHP 5 >= 5.5.0, PHP 7)

imagecropauto利用可能なモードを指定して、画像を自動的にクロップする

説明

resource imagecropauto ( resource $image [, int $mode = -1 [, float $threshold = .5 [, int $color = -1 ]]] )

指定した mode にしたがって、画像を自動的にクロップします。

警告

この関数は、 現在のところ詳細な情報はありません。引数のリストのみが 記述されています。

パラメータ

image

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

mode

以下の定数のいずれか。

IMG_CROP_DEFAULT
IMG_CROP_TRANSPARENT を使うことを試みます。 失敗した場合は IMG_CROP_SIDES を使います。
IMG_CROP_TRANSPARENT
透過色の背景をクロップします。
IMG_CROP_BLACK
黒の背景をクロップします。
IMG_CROP_WHITE
白の背景をクロップします。
IMG_CROP_SIDES
画像の四隅から、クロップする背景色を検出します。
IMG_CROP_THRESHOLD
thresholdcolor を用いてクロップします。
threshold

画像の色とクロップする色を比較する際に用いる許容誤差を、パーセントで指定します。 色の違いを判断する際には、RGBキューブ内での距離を用います。

IMG_CROP_THRESHOLD モードのときにだけ利用します。

color

RGB値あるいはパレットインデックスを指定します。

IMG_CROP_THRESHOLD モードのときにだけ利用します。

返り値

成功した場合にクロップ後の画像リソースを返します。失敗した場合に FALSE を返します。 クロップする箇所がなかった場合やすべてクロップされてしまった場合は、処理が失敗したものとみなされます。 この場合は、imagecrop()FALSE を返します。

例1 自動クロップの適切な処理

返り値のところで説明したとおり、何もクロップしなかった場合や全部クロップしてしまったときに imagecropauto() が返す値は FALSE となります。 この例では、クロップする部分がある場合にだけ画像リソース $im を自動クロップします。 それ以外の場合は、元の画像をそのまま使います。

<?php
$cropped 
imagecropauto($imIMG_CROP_DEFAULT);
if (
$cropped !== false) { // 新しい画像リソースが戻された場合にだけ
    
imagedestroy($im);    // 元の画像を破棄して
    
$im $cropped;       // クロップ後の画像を $im に代入します
}
?>

add a note add a note

User Contributed Notes 1 note

up
1
raphael.deiana
1 month ago
In some cases the use of the IMG_CROP_WHITE or IMG_CROP_BLACK does not work. The function returns FALSE. It is best to use the IMG_CROP_THRESHOLD mode and specify the color in fourth argument as in the example below :

<?php

$original_img
= imagecreatefromjpeg($image_path);

// Use this :
$cropped_img_white = imagecropauto($original_img , IMG_CROP_THRESHOLD, null, 16777215);
// Rather than :
$cropped_img_white = imagecropauto($original_img , IMG_CROP_WHITE);

// AND

// Use this :
$cropped_img_black = imagecropauto($original_img , IMG_CROP_THRESHOLD, null, 0);
// Rather than :
$cropped_img_black = imagecropauto($original_img , IMG_CROP_BLACK);

?>
To Top