Функция 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 представляет собой специализированный фильтр для улучшения качества изображения, что особенно полезно после изменения его размера, когда изображение может стать размытым или менее чётким.
Комментарии (0)
Автор контента
Оффлайн
Administrator
Последняя авторизация: 05.07.2026 18:32
- Страница размещена: 22.01.2025 01:04
- Последнее обновление: 22.01.2025 01:04