Иногда есть необходимость "заблюрить картинку", т.е. сделать ее размытой с помощью php-скрипта. Это может понадобится для замены каких-то изображений для неавторизованных пользователей, например, или для скрытия результатов теста. Можно для этой цели использовать CSS-фильтр blur(), но при открытии картинки в новой вкладке пользователь все равно увидит изображение без фильтра.

Поэтому мы можем использовать функцию, которая будет преобразовывать изображение из его нормального вида в размытое. В функцию мы будем передавать URL изображения, а возвращать будем 2 параметра в виде массива - URL нового размытого изображения и путь к нему в файловой системе.

Внутри функции нам понадобится получить путь к файлу изображения не по URL, а в файловой системе сервера, т.к. именно в папку, где хранится исходное изображение, мы будем сохранять новое, размытое изображение с суффиксом -blured. Разрешение файла изображения может быть JPEG, PNG, GIF, WEBP или AVIF, т.к. php предоставляет ряд функций для создания изображений в этих форматах, но вы должны понимать, что такая функция, как imageavif() будет работать только с php с версии 8.1.

Результатом выполнения этого кода будет вывод 2-х изображений в форматах JPG и WEBP в нормальном и размытом состоянии:

php сделать размытую картинку

В коде есть проверка на существование нужного вам изображения для того, чтобы не генерировать его снова.

Неполное размытие картинки по сторонам

Еще более крутой вариант - размытие только по боковым сторонам. Подсмотрено здесь.

И этот, и предыдущий код требует от одной до нескольких секунд для создания изображений в зависимости от мощности компьютера и размеров картинки, поэтому вам нужно будет подождать результата.

Функция, приведенная ниже, отличается от той, что была в первом коде. В нее вы передаете путь к обычному изображению и тот путь, куда должно быть сохранено новое. Вставить в код нужное  изображение вы должны сами в зависимости от заданного вами пути к нему.

Проверка на существование нужного вам изображения в функции отсутствует.

Результат выполнения кода будет таким:

Частичное размытие картинки на php

Автор: Админ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *