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 в случае возникновения ошибки. Если полное изображение было обрезано, imagecrop() возвращает false.

Список изменений

Версия Описание
8.0.0 image теперь ожидает экземпляр GdImage; ранее ожидался ресурс (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($imIMG_CROP_DEFAULT);
if (
$cropped !== false) { // в случае возврата нового объекта изображения
    
imagedestroy($im);    // мы уничтожаем исходное изображение
    
$im $cropped;       // и назначаем обрезанное изображение в $im
}
?>

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

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

User Contributed Notes 2 notes

up
4
raphael.deiana
6 years 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);

?>
up
2
Ray.Paseur sometimes uses Gmail
5 years ago
Please see the note on ImageCrop() that describes an extraneous black line at the bottom of the cropped image.
http://php.net/manual/en/function.imagecrop.php#119537

Bug 67447 applies to ImageCropAuto(), too.
https://bugs.php.net/bug.php?id=67447
To Top