Слава Україні!
Создание уменьшенных копий изображений
Несмотря на богатство набора функций, предоставляемых в PHP для работы с изображениями, простого инструмента для создания уменьшенных копий-превьюшек среди них нет. Предлагаемая функция позволяет решать эту задачу в одно действие.
Функция работает с изображениями формата GIF, JPEG и PNG (при желании можно расширить этот список, насколько это позволяет библиотека GD, на основе которой построена работа предлагаемой функции). В качестве входных аргументов она принимает:
- путь к исходному изображению
- путь к будущей маленькой копии (включая имя файла)
- ширину копии
- высоту копии
- качество для изображений в формате jpeg: 0 - 100, по умолчанию - 75 (подробнее см. руководство функции imagejpeg() на php.net)
При желании высоту можно не передавать — функция сама рассчитает её и сделает изображение тех же пропорций, что и исходное. Если передать нулевую ширину — также будет сделано изображение тех же пропорций, но уже на основании высоты:
// пусть файл $imgpath - изображение 800х600
image_resize($imgpath, $preview, 100); // будет создано изображение $preview 100х75
image_resize($imgpath, $preview, 0, 100); // а так $preview получится 133х100
Если пропорции переданных ширины и высоты отличаются от исходных, новое изображение окажется искажено, поэтому лучше использовать один из вышеперечисленных вариантов.
Также нужно озаботиться тем, чтобы исходный файл уже существовал (при обращении к несуществующему файлу функция сгенерирует warning), и чтобы у веб-сервера имелись права на запись в то место, куда хочется поместить уменьшенную копию (иначе также будет warning).
Для jpeg-изображений функция выполняет чересстрочное формирование, благодаря чему изображение создаётся в формате progressive JPEG и начинает отображаться в браузере до окончания полной загрузки с постепенным увеличением качества (подробнее см., например, на php.net).
Ниже приводится непосредственно код функции.
Важлива інформація
Міністерство оборони
України
України
з 24.02 по 20.04
втрати противника
орієнтовно склали:
втрати противника
орієнтовно склали:
941100 ( +950 )
особового складу
10677 ( +1 )
танків
22271 ( +5 )
бойових бронемашин
26649 ( +49 )
артилерійських систем
1368 ( +0 )
РСЗВ
1139 ( +0 )
засоби ППО
370 ( +0 )
літаків
335 ( +0 )
гелікоптерів
45274 ( +112 )
автомобільної техніки
28 ( +0 )
кораблі / катери
3148 ( +0 )
крилаті ракети
33240 ( +64 )
БПЛА
3859 ( +1 )
спец. техніки
4 ( +0 )
установок ОТРК/ТРК
1 ( +0 )
підводні човни