(PHP 5 >= 5.5.0, PHP 7, PHP 8)
imagecropauto — Обрезает изображение автоматически на основе заданного режима
$image
,$mode
= IMG_CROP_DEFAULT
,$threshold
= 0.5,$color
= -1 Автоматически обрезает изображение на основе заданного режима (mode
).
image
Объект GdImage, который возвращает одна из функций, создающих изображения, например, imagecreatetruecolor().
mode
Одна из следующих констант:
IMG_CROP_DEFAULT
IMG_CROP_TRANSPARENT
. До PHP 7.4.0 встроенный модуль libgd выбирал режим IMG_CROP_SIDES
, если у изображения не было прозрачного цвета. IMG_CROP_TRANSPARENT
IMG_CROP_BLACK
IMG_CROP_WHITE
IMG_CROP_SIDES
IMG_CROP_THRESHOLD
threshold
и color
. threshold
Определяет допуск в процентах, который будет использован при сравнении цвета изображения и цвета обрезки. Метод расчёта цветовой разницы основан на цветовом расстоянии в кубе RGB(a).
Учитывается только в режиме IMG_CROP_THRESHOLD
.
Замечание: До PHP 7.4.0 в модуле libgd работал немного иной алгоритм, поэтому один и тот же порог
threshold
давал разные результаты для системного и встроенного модуля libgd.
color
Либо значение цвета RGB, либо индекс палитры.
Учитывается только в режиме IMG_CROP_THRESHOLD
.
Возвращает объект обрезанного изображения в случае успешного выполнения или false
, если возникла ошибка. Возвращает false
также и тогда, когда всё изображение было обрезано.
Версия | Описание |
---|---|
8.0.0 | Параметр image теперь ожидает экземпляр класса GdImage; раньше параметр ждал корректный gd -ресурс (resource). |
8.0.0 | В случае успешного выполнения функция теперь возвращает объект GDImage; ранее возвращался ресурс (resource). |
7.4.0 | Поведение imagecropauto() в комплекте libgd синхронизировано с системным 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
}
?>