PHP Thumb – это библиотека, основанная на PHP GD и предназначена для создания превью изображений для каталогов, товаров и т.д. В ней есть возможность изменять и ограничивать размер, подгонять изображения под нужный формат, поворачивать изображения и накладывать водяные знаки.
Быстрый старт
Ограничение размера до 2000px и наложение копирайта:
require_once __DIR__ . '/thumbs.php';
$image = new Thumbs(__DIR__ . '/image.jpg');
$image->reduce(2000, 2000);
$image->watermark(__DIR__ . '/watermark.png', 'center');
$image->save();
Создание превью 300x200 и отдача в браузер:
require_once __DIR__ . '/thumbs.php';
$image = new Thumbs(__DIR__ . '/image.jpg');
$image->thumb(300, 200);
$image->output();
Для отлова ошибок доступны исключения:
try {
$image = new Thumbs(__DIR__ . '/файл');
$image->thumb(300, 300);
$image->save();
} catch (Exception $error) {
echo $error; // Выведет: файл не найден
}
$img->resize($width, $height)
– изменяет размер изображения. Один из параметров может быть нулевым, так картинка не растянется, сохранив свои пропорции.
reduce($max_width, $max_height)
– метод для пропорционально уменьшения изображений до заданных размеров. Если высота или ширина меньше установленных рамок, то фото остается без изменений.
resizeCanvas($width, $height, $bg)
– метод для изменения размера холста изображения.
Параметр $bg
устанавливает RGB-цвет фона в виде массива, для PNG-изображений пустой $bg
оставит фон прозрачным.
Пример №1:
$image = new Thumbs(__DIR__ . '/image.jpg');
$image->resizeCanvas(640, 640, array(255, 255, 255));
$image->output();
Пример №2:
$image = new Thumbs(__DIR__ . '/image.jpg');
$image->resizeCanvas(1000, 1000, array(0, 0, 0));
$image->output();
crop($x, $y, $width, $height)
– вырезает часть изображения с отступом $x
и $y
от верхнего левого края с размером $width
и $height
.
$thumb = new Thumbs(__DIR__ . '/image.jpg');
$thumb->crop(650, 450, 250, 150);
$image->output();
cut($width, $height)
– метод «вписывает» изображение в заданную область, уменьшая или увеличивая его и отрезает то что не вошло.Пример №1:
Пример №2:
thumb($width, $height)
– основной метод для создание превью, уменьшает изображение, пытаясь вписать его в заданную область. Если у картинки однородный фон, то пытается его дорисовать, в противном случаи идет обрезка по краям.
Работает не всегда корректно из-за градиента цветов в фоне изображения, и не подходит для изображений с нарисованными линиями по краям.
$image = new Thumbs(__DIR__ . '/image.jpg');
$image->thumb(300, 200);
$image->save(__DIR__ . '/new.png');
Оригинальные изображения:
После метода thumb:
Поворот на 90° по часовой стрелки:
Поворот на 90° против часовой стрелки:
watermark($file, $position, $transparency)
– накладывает изображение копирайта на исходное изображение.
$file
– путь до файла водяного знака.$position
– позиция (center
,top-left
,top
,top-right
,right
,bottom-right
,bottom
,bottom-left
,left
).$transparency
– уровень прозрачности, 0 - прозрачный, 1 - полностью виден.
В центре:
$image = new Thumbs(__DIR__ . '/image.jpg');
$image->watermark(__DIR__ . '/watermark.png', 'center', 50);
$image->output();
Внизу слева:
$image = new Thumbs(__DIR__ . '/image.jpg');
$image->watermark(__DIR__ . '/watermark.png', 'bottom-left', 50);
$image->output();
Внизу справа:
$image = new Thumbs(__DIR__ . '/image.jpg');
$image->watermark(__DIR__ . '/watermark.png', 'bottom-right', 50);
$image->output();
В классе есть несколько методов для сохранения результата.
Сохранение в открытый файл:
Сохранение в файл JPG:
Сохранение в файл PNG:
Сохранение в файл GIF:
Сохранение в файл WEBP:
Вывод изображения в браузер
Также есть метод, который одновременно сохранит результат в новый файл и отправит его в браузер.
Поставил ваш сайт себе в закладки.
Пол дня блин потратил, а тут раз и всё заработало.
Отправил небольшую шабашку 😉
Обработку делаю следующим образом:
Помогите, пожалуйста, разобраться с проблемой. Спасибо.
$image->output();
в браузер выводит какие то кракозябры, а как в браузере увидеть получившееся изображение не сохраняя его на диск ?
Авторизуйтесь, чтобы добавить комментарий.
Другие публикации