Если Вы создаете галереи для ваших заказчиков, то вам рано или поздно понадобится сниппет создания превьюшек изображений. Сайт — это классный маркетинговый инструмент. Например, невозможно найти лучшего способа рекламы магазина, чем создание многочисленных фотографий продукции.
И тогда очень часто всплывает один вопрос — как создать много и быстро превьюшек фотографий, тем более что заказчик не хочет за них платить. Выход был найден — создать сниппет генерации превьюшек на PHP.
PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
function make_thumb($src,$dest,$desired_width) { /* read the source image */ $source_image = imagecreatefromjpeg($src); $width = imagesx($source_image); $height = imagesy($source_image); /* find the "desired height" of this thumbnail, relative to the desired width */ $desired_height = floor($height*($desired_width/$width)); /* create a new, "virtual" image */ $virtual_image = imagecreatetruecolor($desired_width,$desired_height); /* copy source image at a resized size */ imagecopyresized($virtual_image,$source_image,0,0,0,0, $desired_width,$desired_height,$width,$height); /* create the physical thumbnail image to its destination */ imagejpeg($virtual_image,$dest); } |
Вышеприведенный код использует функциональность библиотеки PHP GD2. Единственный недостаток использования PHP в том, что картинки не выглядят так хорошо, как картинки, созданные в Photoshop или GIMP.
Если у вас возникли какие-то вопросы по настройке или функциональности сниппета, задавайте вопросы в комментариях.
А пропорции сохраняются? если да, то как? отрезается часть изображения или дорисовывают фон?
пропорции сохраняются согласно базовой ширине
$desired_width
Отличная функция! Всё просто и по делу, не то, что у некоторых — словоблудия на 4 экрана и функционал замученный.
Кстати, если здесь в коде заменить функцию imagecopyresized () на «сглаженную» imagecopyresampled (), а строку сохранения в файл заменить на следующую:
imagejpeg ($virtual_image,$dest,95);
т.е. выставить качество под 95 у JPEG.
Тогда превьюшки будут ничем не хуже фотошопных! А скрипт останется таким же простым! :)
P.S. я кстати немножко переделал эту функцию под себя следующим образом: я в параметрах передаю требуемую ВЫСОТУ, а не ширину картинки — так удобнее выстраивать галерею фоток различных пропорций в СТРОКИ одинаковой высоты :) Надеюсь, вы понимаете о чем я =)
АВТОР Я ТЕБЯ ЛЮБЛЮ!!!!!!!!!!!!!
Сколько я себе мозги **ал пока этот скрипт не применил!
imagecopyresized замени на imagecopyresampled