<MyRusakov.ru />

Профессиональная Web-разработка. Дизайн, код и автоматизация

Профессиональная Web-разработка. Дизайн, код и автоматизация

Это очень подробный курс из разряда "всё включено". Разбираются следующие темы: HTML, CSS, SCSS, JavaScript, PHP, SQL, Laravel, Nginx, PostCSS, npm, Vite, Vitest, Composer, PHPUnit, Prettier, Stylelint, ESLint, Pint, Larastan, Git, Agile, Scrum, Docker, Supervisord, Figma, Stitch AI, Confluence, Jira.

Рассчитан и на новичков, и на тех, кто уже знаком с основами, но хочет освоить полный цикл разработки.

Помимо самой теории, Вы увидите пример создания Web-проекта на 20 000 строк кода: от идеи и документации на Confluence через планирование на Jira, fullstack-разработку до деплоя на VPS.

Помимо уроков, курс содержит упражнения для закрепления знаний и финальное тестирование. А ещё Вы получите 5 полноценных Бонусных курсов: «GitLab под ключ», «Вёрстка сайта с нуля 2.0», «JavaScript с Нуля до Гуру 2.0», «PHP и MySQL с Нуля до Гуру 3.0» и «Laravel от А до Я».

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Форум сайта MyRusakov.ru

Простой коллаж фотографий
07.12.2018 17:05:53 Простой коллаж фотографий Сообщение #1
Sesuriti

Sesuriti

Продвинутый

Продвинутый

Дата регистрации:
24.04.2013 16:20:53

Сообщений: 72

Привет! Помогите доработать скрипт генерации фото коллажа.

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

Но мне нужно, что бы можно было делать примерно так как на скриншоте
http://imagizer.imageshack.com/img923/1609/xpuA7L.png
Профиль
07.12.2018 17:09:09 Простой коллаж фотографий Сообщение #2
Sesuriti

Sesuriti

Продвинутый

Продвинутый

Дата регистрации:
24.04.2013 16:20:53

Сообщений: 72

$max_size = $this->max_size;
$widths = array();
$heights = array();
foreach ($images as $image) {
$source = $this->createFrom($image);
$heights[] = imagesy($source);
}
$averageRowHeight = array_sum($heights) / count($heights);
foreach ($images as $image) {
$source = $this->createFrom($image);
$width = imagesx($source);
$height = imagesy($source);
$widths[] = round($width / $height * $averageRowHeight);
}
$gap = isset($settings['cover_gap']) ? $settings['cover_gap'] : 50; // Отступы между картинками
$index = 0;
$rowNumber = 0;
$rows = array();
$reduceArraySum = ceil(array_reduce($widths, 'reduceArraySum' / $max_size);
$max_len = (count($widths) > 4) ? 3 : 2;
$rows = array_chunk($widths, $max_len);
$areaWidth = 0;
$areaHeight = 0;
$sizes = array();
for ($i = 0; $i < count($rows); $i++) {
if (empty($rows[$i])) continue;
$rowWidth = 0; $rowHeight = 0;
for ($j = 0; $j < count($rows[$i]); $j++) {
if (empty($rows[$i][$j])) continue;
$k = ($max_size - (count($rows[$i]) - 1)) / array_reduce($rows[$i], 'reduceArraySum';
$width = $rows[$i][$j] * $k;
$height = $k * $averageRowHeight;
$sizes[$i][$j] = array($width, $height);

$rowWidth += $width;
if ($rowHeight < $height) {
$rowHeight = $height;
}
}
if ($areaWidth < $rowWidth) {
$areaWidth = $rowWidth + $gap;
} $areaHeight += $rowHeight + $gap;
}
$areaWidth = floor($areaWidth);
$areaHeight = floor($areaHeight);
$collage = imagecreatetruecolor($areaWidth, $areaHeight);
$r = 255; $g = 255; $b = 255;
if (!empty($settings['background'])) {
list($r, $g, $b) = $this->hex2rgb($settings['background']);
}
$bg = imagecolorallocate($collage, $r, $g, $b);
imagefill($collage, 0, 0, $bg);
$n = 0; $x = $gap / 2; $y = $gap / 2;
foreach ($sizes as $i => $arRowSize) {
foreach ($arRowSize as $j => $arCellSize) {
if (empty($images[$n])) continue;
$filename = $images[$n];
$image = $this->createFrom($filename);
$origWidth = imagesx($image);
$origHeight = imagesy($image);
list($newWidth, $newHeight) = $arCellSize;
imagecopyresampled($collage, $image, $x, $y, 0, 0, $newWidth, $newHeight, $origWidth, $origHeight);
imagedestroy($image);
$n++;
$x += $newWidth;
}
$x = 0;
$y += $newHeight;
}
$collagename = "collage.jpg";
$collagepath = $image_path.$collagename;
imagejpeg($collage, $collagepath, 100);
imagedestroy($collage);
Профиль