imagecropauto

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

imagecropautoОбрезает изображение автоматически на основе заданного режима

Описание

imagecropauto(
    GdImage$image,
    int$mode = IMG_CROP_DEFAULT,
    float$threshold = 0.5,
    int$color = -1
): GdImage|false

Автоматически обрезает изображение на основе заданного режима (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
Анализирует 4 угла изображения, чтобы попытаться обнаружить фон для обрезки.
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
}

?>

Смотрите также

  • imagecrop() - Обрезать изображение до заданного прямоугольника
To Top