Thumbnail - класс для создания миниатюр изображений по индивидуальным критериям.
Скачать:thumbnail.zip 4.46 KB
Переменные
Класс содержит несколько публичных статичных переменных, определяющих общие правила для всех миниатюр. Вы можете просто изменить их значение или переопределить в своём классе.
$sourceFolder
Папка хранения изображений относительно корня документа. Относительно неё следует указывать путь при создании объекта. Относительно неё же будет будет построено дерево каталогов для хранения изображений. По умолчанию - / (корень документа).
$targetFolder
Папка хранения миниатюр относительно корня документа. По умолчанию - /thumbnails/.
$paddingColor
Цвет заливки свободных полей миниатюры. Указывается шестнадцатиричная запись для цветовой RGB-модели. По умолчанию - ffffff (белый).
$webRoot
Путь до корня документа. По умолчанию будет использована переменная $_SERVER['DOCUMENT_ROOT']
$getThumbnailPathMethod
Функция определяющая путь к эскизу и имя файла. На вход должна принимать объект Thumbnail и возвращать строку. По умолчанию будет использован собственный метод класса.
Методы
of($path, $width = 0, $height = 0, $crop = false, $stretch = false)
Статичный метод возвращающий новый объект Thumbnail
$path - единственный обязательный параметр, путь к исходному изображению относительно папки с изображениями.
$width - ширина миниатюры в пикселях, при значении 0 будет вычислена автоматически, исходя из пропорций исходного изображения. Также может быть задано методами width() и size()
$height - высота миниатюры в пикселях, при значении 0 будет вычислена автоматически, исходя из пропорций исходного изображения. Также может быть задано методами height() и size()
$crop - следует ли обрезать изображение, если заданные пропорции не совпадают с пропорциями исходного изображения. По умолчанию false - изображение будет "впихнуто" в заданные рамки, оставшиеся поля будут залиты выбранным цветом. Значение также может быть изменено методами crop() и contain()
$stretch - растягивать ли изображение, если его исходные размеры меньше заданных для миниатюры. По умолчанию false. Значение также может быть изменено методами stretch() и nostretch()
width($width)
Устанавливает фиксированную ширину миниатюры в пикселях, при этом для высоты устанавливается размер 0 - будет высчитана автоматически, исходя из пропорций исходного изображения. Возвращает объект.
height($height)
Устанавливает фиксированную высоту миниатюры в пикселях, при этом для ширины устанавливается размер 0 - будет высчитана автоматически, исходя из пропорций исходного изображения. Возвращает объект.
size($width, $height)
Устанавливает фиксированные размеры миниатюры в пикселях. Возвращает объект.
crop()
Указывает, что в случае несовпадения пропорций исходного изображения и миниатюры следует исходное обрезать. Имеет смысл, только при указании обоих размеров. Возвращает объект.
contain()
Указывает, что в случае несовпадения пропорций исходного изображения и миниатюры следует исходное целиком разместить в рамке с добавлением полей. Имеет смысл, только при указании обоих размеров. Возвращает объект.
stretch()
Указывает, что в случае, если размеры исходного изображения меньше заданных для миниатюры следует исходное изображение растянутью Возвращает объект.
nostretch()
Указывает, что в случае, если размеры исходного изображения меньше заданных для миниатюры следует исходное оставить как есть. Возвращает объект.
path()
Создаёт, если нужно, миниатюру и возвращает путь к ней. Метод также будет вызван при попытке преобразовать объект к строке:
<img src="<?php echo Thumbnail::of('images/example.jpg', 100)->path();?>" /> <!-- здесь path() можно опустить: --> <img src="<?php echo Thumbnail::of('images/example.jpg', 100);?>" />
img($attributes = [])
Оборачивает путь к миниатюре в HTML-тег img. В качестве параметра можно указать массив аттрибутов тега с их значениями:
<img src="<?php echo Thumbnail::of('images/example.jpg', 100);?>" class="thumbnail" /> <!-- можно записать так: --> <?php echo Thumbnail::of('images/example.jpg', 100)->img(['class' => 'thumbnail']);?>
Демо
Пример 1 (300px X 200px)
Пример 2 (320px X 100px)
Пример 3 (128px X 82px)
<img src="<?php echo Thumbnail::of('example1.jpg', 150, 150) ?>" /> <img src="<?php echo Thumbnail::of('example1.jpg')->size(150,150) ?>" /> <?php echo Thumbnail::of('example1.jpg')->size(150,150)->contain()->nostratch()->img() ?>