<MyRusakov.ru />

Программирование на C++ в Unreal Engine 5

Программирование на C++ в Unreal Engine 5

Данный курс научит Вас созданию игр на C++ в Unreal Engine 5. Курс состоит из 12 разделов, в которых Вас ждёт теория и практика. Причём, в качестве практики будет создан весьма крупный проект объёмом свыше 5000 строк качественного кода, который уже на практике познакомит Вас с принципами создания игр на C++ в Unreal Engine 5.

Параллельно с курсом Вы также будете получать домашние задания, результатом которых станет, в том числе, полноценная серьёзная работа для портфолио.

Помимо самого курса Вас ждёт ещё и очень ценный Бонус: «Тестирование Unreal-проектов на Python», в рамках которого Вы научитесь писать очень полезные тесты для тестирования самых разных аспектов разработки игр.

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

Подпишитесь на мой канал на 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);
Профиль