Генератор уникальных изображений
Нужно написать скрипт который сгенерирует уникальные изображения из набора картинок. Скрипт нужен для генерации персонажей.
Есть 4 папки с картинками:
Фон (5 шт)
Одежда (4 шт)
Головной убор (3 шт)
Штаны (2 шт)
Есть таблица, в которой указано какая должна быть уникальность у каждого предмета. Далее скрипт перебирает все вариации, генерирует картинки и складывает их в папку.
Что означает уникальность? Это означает то, что к примеру только у 10% от общего количества должна быть красная футболка. У 10% будет панама и т.д.
Лимит создания картинок ограничен Одеждой. Т.е к примеру по черной футболке будут созданы следующие персонажи:
Черная футболка (только)
Черная футболка + шапка
Черная футболка + кепка
Черная футболка + панама
Черная футболка + шапка + черные джинсы
Черная футболка + кепка + черные джинсы
Черная футболка + панама + черные джинсы
Черная футболка + шапка + белые джинсы
Черная футболка + кепка + белые джинсы
Черная футболка + панама + белые джинсы
Черная футболка + черные джинсы
Черная футболка + белые джинсы
При генерации рандомно берем Фон из соответствующей папки. Все комбинации также должны быть уникальными и генерироваться рандомно чтобы не получилось так чтобы все 50 шапок сгенерированы с черной футболкой.
Накладывается сначала Фон -> Одежда -> Головной убор -> Штаны.
После генерации вывести сгенерированное количество изображений по каждому предмету, например:
Черная футболка 12 шт.
Красная футболка 10 шт. и т.д
На просторах интернета был найден такой скрипт, возможно его можно доработать.
<?php $backgrounds = array_diff(scandir('./backgrounds/'), array('.','..','.DS_Store')); $texts = array_diff(scandir('./texts/'), array('.','..','.DS_Store')); $filters = array_diff(scandir('./filters/'), array('.','..','.DS_Store')); function nameGenerator($length) { return substr(str_shuffle("_0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, $length); } // foreach ($backgrounds as $background) { // foreach ($texts as $text) { // foreach ($filters as $filter) { // $layer1 = imagecreatefrompng("./backgrounds/{$background}"); $layer2 = imagecreatefrompng("./texts/{$text}"); $layer3 = imagecreatefrompng("./filters/{$filter}"); // imagealphablending($layer1, true); imagesavealpha($layer1, true); // imagecopy($layer1, $layer2, 0, 0, 0, 0, 900, 900); imagecopy($layer1, $layer3, 0, 0, 0, 0, 900, 900); // imagejpeg($layer1, "./results/".nameGenerator(10).".jpg"); // imagedestroy($layer1); imagedestroy($layer2); imagedestroy($layer3); } } } ?>
комментарий
через терминал php script.php и все. Но надо убедиться сперва что на сервере установлен gd. все фото должны быть в формате пнг