Функция cot_imagesharpen в Cotonti

Функция cot_imagesharpen используется для улучшения резкости изображения после изменения его размеров. Это полезно, например, когда изображение становится размытым или теряет чёткость из-за ресайза.


/**
 * Sharpen an image after resize
 *
 * @param resource $imgdata Image resource from an image creation function
 * @param int $source_width Width of image before resize
 * @param int $target_width Width of image to sharpen (after resize)
 * @return resource - image resource
 */
function cot_imagesharpen($imgdata, $source_width, $target_width)
{
    $s = $target_width * (750.0 / $source_width);
    $a = 52;
    $b = -0.27810650887573124;
    $c = .00047337278106508946;
    $sharpness = max(round($a+$b*$s+$c*$s*$s), 0);
    $sharpenmatrix = array(
        array(-1, -2, -1),
        array(-2, $sharpness + 12, -2),
        array(-1, -2, -1)
    );
    imageconvolution($imgdata, $sharpenmatrix, $sharpness, 0);
    return $imgdata;
}

Разбор функции cot_imagesharpen


Параметры функции:
$imgdata — ресурс изображения, полученный от одной из функций создания изображений, таких как imagecreatefromjpeg, imagecreatefrompng или imagecreatefromgif. Это изображение, которое нужно улучшить по резкости.

$source_width — исходная ширина изображения, до изменения размера.

$target_width — ширина изображения после изменения размера. Эта величина используется для расчёта степени резкости, которая должна быть применена.

Логика работы:
Расчёт коэффициента резкости:

Для корректной настройки степени резкости используется зависимость от ширины изображения до и после изменения размера.
Переменная $s — это масштабный коэффициент, который вычисляется как отношение ширины целевого изображения к исходной ширине, умноженное на 750 (этот коэффициент был подобран эмпирически).
Настройка матрицы для повышения резкости:

Для повышения резкости применяется матрица свёртки. Она представляет собой фильтр, который усиливает контуры изображения, делая его более чётким.
Используется матрица с отрицательными значениями для окружающих пикселей, и положительное значение для центрального пикселя. Это помогает создать эффект резкости.
$sharpness — это вычисленный уровень резкости на основе ширины изображения и коэффициентов (a, b, c).
Применение матрицы свёртки:

Функция imageconvolution() выполняет свёртку изображения с заданной матрицей. Эта операция применяет фильтр резкости к изображению.
Возврат изображения:

После применения матрицы свёртки и повышения резкости функция возвращает ресурс изображения с улучшенной резкостью.


Пример использования:
Функция используется внутри другой функции, которая изменяет размер изображения (например, cot_imageresize), и после ресайза передаёт результат в cot_imagesharpen для улучшения резкости.

Пример применения:

$canvas = ($sharpen) ? cot_imagesharpen($canvas, $source_width, $target_width) : $canvas;


Здесь:

$canvas — это ресурс изображения после изменения его размеров.
$source_width — исходная ширина изображения.
$target_width — целевая ширина изображения (после изменения размеров).

Если флаг $sharpen установлен в true, то изображение будет передано в функцию cot_imagesharpen, чтобы улучшить резкость. В противном случае, изображение остаётся без изменений.

Заключение:
Функция cot_imagesharpen представляет собой специализированный фильтр для улучшения качества изображения, что особенно полезно после изменения его размера, когда изображение может стать размытым или менее чётким.

3 минут чтения Administrator

Комментарии (0)

Комментарии отсутствуют
Добавление комментариев доступно только зарегистрированным пользователям

Автор контента

Administrator

Оффлайн

Administrator

Последняя авторизация: 05.07.2026 18:32

  • Страница размещена: 22.01.2025 01:04
  • Последнее обновление: 22.01.2025 01:04