Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -79,6 +79,11 @@ def setup_initial_files():
|
|
| 79 |
2. **MODEL SYNTHESIS & PRODUCT APPLICATION:** Generate a hyper-realistic human model. Synthesize lifelike skin with visible pores, subtle imperfections, and realistic micro-textures. Crucially, the cosmetic product MUST be applied flawlessly to the model's face or body (e.g., lipstick on lips, eyeshadow on eyes, foundation on skin), demonstrating the exact shade, texture, and finish of the real product. The model must also elegantly hold the product. ABSOLUTELY NO WAXY, PLASTIC, OR GLASS-LIKE SKIN TEXTURES.
|
| 80 |
3. **ZERO DEVIATION PROTOCOL:** Absolutely no artistic interpretation of the product's color or texture. The applied makeup must be a 1:1 match to the product inside the packaging. No waxy skin.
|
| 81 |
4. **STUDIO LIGHTING MASTERY:** High-end beauty lighting. Soft, diffused, yet shape-defining highlights to accentuate the skin texture and the cosmetic product's finish without creating a fake glossy CGI effect.""",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 82 |
"marketplace_mode_base": """\n\n**COMPOSITION DIRECTIVE (MARKETPLACE HERO-SHOT MODE):** YOU ARE A WORLD-CLASS E-COMMERCE ART DIRECTOR. The primary goal is to create a visually arresting "hero image" for a product listing that maximizes click-through rates. The main subject must be perfectly rendered and visually dominant.
|
| 83 |
- **Dynamic Background & Effects:** The background is clean and non-distracting but enhanced with sophisticated, context-aware special effects. **MANDATORY: NO TEXT OR GRAPHICAL ICONS/LOGOS.**
|
| 84 |
- **If the product is clothing/wearable:** Generate elegant swirls of fabric, subtle particle effects, or abstract light patterns that complement the garment's color and material.
|
|
@@ -151,6 +156,19 @@ def setup_initial_files():
|
|
| 151 |
"volcanic_ash_desert": "The product is presented on a piece of dramatic, jet-black volcanic rock on a black sand beach. The background is a soft-focus view of misty, crashing ocean waves. Moody, diffused light creates sophisticated reflections on the product's surface, emphasizing its premium quality and resilience.",
|
| 152 |
"salt_flats_mirage": "The product rests on the stark, white, crystalline surface of a salt flat. A long, sharp shadow is cast by the intense sun. The background is a minimalist, out-of-focus horizon where the white ground meets a deep blue sky, creating a visually clean and high-impact composition.",
|
| 153 |
"highlands_majesty": "The product is placed on an ancient, mossy stone, with the misty, rolling hills of the Scottish Highlands blurred in the background. The lighting is soft and natural, with realistic water droplets clinging to the product's surface, evoking a sense of enduring, natural luxury."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 154 |
}
|
| 155 |
}
|
| 156 |
with open(PROMPTS_FILE, 'w', encoding='utf-8') as f:
|
|
@@ -831,16 +849,17 @@ p.subtitle {
|
|
| 831 |
|
| 832 |
.mode-selector {
|
| 833 |
display: grid;
|
| 834 |
-
grid-template-columns: repeat(
|
| 835 |
margin-bottom: 35px;
|
| 836 |
background-color: var(--input-bg);
|
| 837 |
border-radius: 12px;
|
| 838 |
padding: 6px;
|
| 839 |
border: 1px solid var(--border);
|
|
|
|
| 840 |
}
|
| 841 |
|
| 842 |
.mode-btn {
|
| 843 |
-
padding: 14px
|
| 844 |
background-color: transparent;
|
| 845 |
border: none;
|
| 846 |
color: var(--text-secondary);
|
|
@@ -1189,12 +1208,15 @@ textarea {
|
|
| 1189 |
h1 { font-size: 2rem; }
|
| 1190 |
.form-grid { grid-template-columns: 1fr; gap: 20px; }
|
| 1191 |
.full-width { grid-column: span 1; }
|
| 1192 |
-
.mode-selector { grid-template-columns: repeat(
|
| 1193 |
.mode-btn { font-size: 0.75rem; padding: 12px 5px; }
|
| 1194 |
.style-grid { grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); }
|
| 1195 |
.top-toggles { flex-direction: column; gap: 15px; }
|
| 1196 |
.celebrity-grid { grid-template-columns: 1fr; grid-column: span 1; gap: 20px; }
|
| 1197 |
}
|
|
|
|
|
|
|
|
|
|
| 1198 |
</style>
|
| 1199 |
</head>
|
| 1200 |
<body>
|
|
@@ -1215,6 +1237,7 @@ textarea {
|
|
| 1215 |
<button id="modeChildrenBtn" class="mode-btn" onclick="switchMode('children')" data-lang-key="modeChildren">Дети</button>
|
| 1216 |
<button id="modeObjectBtn" class="mode-btn" onclick="switchMode('object')" data-lang-key="modeObject">Предмет</button>
|
| 1217 |
<button id="modeCosmeticsBtn" class="mode-btn" onclick="switchMode('cosmetics')" data-lang-key="modeCosmetics">Косметика</button>
|
|
|
|
| 1218 |
</div>
|
| 1219 |
|
| 1220 |
<form id="promptForm">
|
|
@@ -1592,7 +1615,7 @@ textarea {
|
|
| 1592 |
<select id="child_pose">
|
| 1593 |
<option value="running joyfully in a field" data-lang-key="child_pose_running">Бежит по полю</option>
|
| 1594 |
<option value="playing enthusiastically with wooden toys on the floor" data-lang-key="child_pose_playing">Играет с игрушками</option>
|
| 1595 |
-
<option value="sitting and curiously looking at a picture book" data-lang-key="child_pose_reading">Сидит с ки
|
| 1596 |
<option value="posing for a candid school photo, smiling naturally" selected data-lang-key="child_pose_posing">Позирует для фото</option>
|
| 1597 |
<option value="laughing and jumping on a bed" data-lang-key="child_pose_jumping">Прыгает на кровати</option>
|
| 1598 |
</select>
|
|
@@ -2107,6 +2130,226 @@ textarea {
|
|
| 2107 |
</div>
|
| 2108 |
</div>
|
| 2109 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2110 |
<div class="btn-container">
|
| 2111 |
<button type="button" class="action-btn" onclick="processAndOpen()">
|
| 2112 |
<span data-lang-key="launchBtn">Launch Synkris</span>
|
|
@@ -2128,9 +2371,10 @@ const cc_f = {"Dakota Fanning":"Дакота Фаннинг","Elle Fanning":"Э
|
|
| 2128 |
|
| 2129 |
const translations = {
|
| 2130 |
ru: {
|
| 2131 |
-
subtitle: "PROMPT GENERATOR & LAUNCHER", modeModel: "Фото на модели", modeChildren: "Дети", modeObject: "Предмет", modeCosmetics: "Косметика",
|
| 2132 |
section1Title: "Параметры модели", section2Title: "Сцена и Стиль", section3Title: "Композиция и Детали", section1ObjectTitle: "Параметры объекта",
|
| 2133 |
-
section2ObjectTitle: "Сцена и Стиль", section1CosmeticsTitle: "Продукт и Модель",
|
|
|
|
| 2134 |
objectWithModelCheck: "С моделью", objectOnMannequinCheck: "На манекене", celebrityCheck: "Знаменитости", marketplaceCheck: "Режим маркетплейса",
|
| 2135 |
celebrityName: "Знаменитость", gender: "Пол", gender_female: "Женщина", gender_male: "Мужчина", age: "Возраст", age_teen: "14-18 лет",
|
| 2136 |
age_20_25: "20-25 лет", age_25_30: "25-30 лет", age_30_40: "30-40 лет", age_40_50: "40-50 лет", nationality: "Внешность/Этнос",
|
|
@@ -2151,12 +2395,13 @@ const translations = {
|
|
| 2151 |
additionalDirectives: "Дополнительные директивы", additionalDirectivesPlaceholderModel: "Например: в кадре виден телефон последней модели, эффект мокрых волос...",
|
| 2152 |
child_gender_girl: "Девочка", child_gender_boy: "Мальчик", child_age_infant: "6-12 месяцев", child_age_toddler: "2-4 года", child_age_child: "5-8 лет",
|
| 2153 |
child_age_preteen: "9-12 лет", child_shot_full: "В полный рост", child_shot_medium: "По пояс", child_shot_portrait: "Портрет",
|
| 2154 |
-
childPoseAction: "Поза/Действие", child_pose_running: "Бежит по полю", child_pose_playing: "Играет с игрушками", child_pose_reading: "Сидит с к
|
| 2155 |
child_pose_posing: "Позирует для фото", child_pose_jumping: "Прыгает на кровати", childDetailsLabel: "Одежда и Де��али",
|
| 2156 |
childDetailsPlaceholder: "Пример: джинсовый комбинезон с потертостями и металлическими пуговицами, вельветовая рубашка в рубчик",
|
| 2157 |
additionalDirectivesPlaceholderChild: "Например: добавь инфографику с текстом 'organic cotton'", objectNameLabel: "Название/Описание предмета",
|
| 2158 |
objectNamePlaceholder: "Например: флакон духов 'Noir', кроссовки 'CyberRun', часы 'Classic Timepiece'", cosmeticsNameLabel: "Название/Описание косметики",
|
| 2159 |
-
cosmeticsNamePlaceholder: "Например: красная помада 'Ruby', тональный крем 'Glow', палетка теней",
|
|
|
|
| 2160 |
additionalDirectivesPlaceholderObject: "Например: добавить инфографику 'new collection', левитация предмета",
|
| 2161 |
additionalDirectivesPlaceholderCosmetics: "Например: акцент на сиянии кожи, макро-кадр губ", detailsVariations: "Детали и Вариации",
|
| 2162 |
detailsCollage: "Коллаж с увеличенными деталями (ткань, фурнитура)", detailsCollageObject: "Коллаж с увеличенными деталями (материал, текстура)",
|
|
@@ -2170,6 +2415,7 @@ const translations = {
|
|
| 2170 |
wan27Check: "Wan 2.7 (Короткий промпт)", wan27Tooltip: 'вы можете отметить этот параметр и пользоваться новым видом качества , в поле выбора качества в поиске напишите "27" и у вас выйдет wan 2.7 image pro',
|
| 2171 |
flagship_styles: {'studio': 'Студия (люкс)', 'product_focus_light': 'Маркетплейс', 'street': 'Стрит-стайл', 'lookbook': 'Лукбук', 'minimalism': 'Минимализм', 'urban_loft_lifestyle': 'Лофт', 'elevator_mirror_selfie': 'Селфи в лифте', 'car_interior_lifestyle': 'В салоне авто', 'golden_hour_field': 'Золотой час в поле', 'messy_bedroom_morning': 'Утро в спальне', 'vintage_35mm_film': 'Винтажная пленка', 'paparazzi_street_flash': 'Папарацци-вспышка', 'cafe_window_contemplation': 'У окна в кафе', 'rooftop_party_sunset': 'Вечеринка на крыше', 'bookstore_aisle_cozy': 'Книжный магазин', 'custom_background_fusion': 'Свой фон (профи)', 'polaroid_snapshot': 'Полароид', 'creative': 'Креатив', 'retro': 'Ретро', 'boho': 'Бохо', 'forest_nymph': 'Лес', 'desert_expedition': 'Пустыня', 'gothic': 'Готика', 'editorial': 'Эдиториал', 'film_noir': 'Нуар', 'cottagecore': 'Коттеджкор', 'royalcore': 'Дворец', 'solarpunk': 'Соларпанк', 'skater': 'Скейтер', 'vibrant_market': 'Рынок', 'cyberpunk': 'Киберпанк', 'fantasy': 'Фэнтези', 'surreal_dreamscape': 'Сюрреализм', 'techwear': 'Techwear', 'home_casual': 'Дом', 'backstage': 'Бэкстейдж', 'road_trip': 'Роуд-трип', 'rainy_day': 'Дождь', 'night_flash': 'Ночь (вспышка)', 'tropical_resort': 'Курорт', 'beach': 'Пляж', 'alaska_winter': 'Аляска (зима)', 'football_field': 'Футбольное поле', 'volcanic_ash_desert': 'Вулкан (Исландия)', 'salt_flats_mirage': 'Солончак (Боливия)', 'highlands_majesty': 'Нагорье (Шотландия)'},
|
| 2172 |
object_styles: {'studio': 'Студия', 'minimalism': 'Минимализм', 'nature': 'Природа', 'luxe': 'Люкс', 'dark': 'Драма', 'geometric': 'Геометрия', 'floating': 'Левитация', 'lifestyle': 'Лайфстайл', 'splash': 'Всплеск', 'handmade': 'Мастерская', 'alaska_winter': 'Аляска (зима)', 'football_field': 'Футбольное поле', 'volcanic_ash_desert': 'Вулкан (Исландия)', 'salt_flats_mirage': 'Солончак (Боливия)', 'highlands_majesty': 'Нагорье (Шотландия)'},
|
|
|
|
| 2173 |
female_body_types: {'standard': 'Стандартное', 'very_slim': 'Очень стройное (модель)', 'slim': 'Стройное (натуральное)', 'slim_busty': 'Стройное с пышной грудью', 'athletic': 'Атлетичное', 'petite': 'Миниатюрное', 'hourglass': 'Песочные часы', 'fit_curvy': 'Спортивное (curvy)', 'plus_size': 'Пышные', 'curvy': 'Мягкое (curvy)', 'full_figured': 'Плюс-сайз', 'pregnant': 'Беременная (одежда для беременных)'},
|
| 2174 |
male_body_types: {'athletic': 'Атлетичное', 'lean and toned': 'Поджарое', 'muscular build': 'Мускулистое', 'broad build': 'Крупное', 'slim build': 'Худощавое'},
|
| 2175 |
female_hairstyles: {'long wavy hair': 'Длинные волнистые', 'short bob cut': 'Короткий боб', 'elegant updo': 'Элегантный пучок', 'straight shoulder-length hair': 'Прямые до плеч', 'pixie cut': 'Пикси', 'messy bun': 'Небрежный пучок', 'high ponytail': 'Высокий хвост', 'braids': 'Косы', 'curly afro': 'Афро кудри', 'bangs': 'С челкой', 'layered haircut': 'Каскад', 'wearing a hijab': 'В платке'},
|
|
@@ -2183,9 +2429,10 @@ const translations = {
|
|
| 2183 |
celebrities_male: c_m, celebrities_female: c_f, child_celebrities_male: cc_m, child_celebrities_female: cc_f
|
| 2184 |
},
|
| 2185 |
kz: {
|
| 2186 |
-
subtitle: "PROMPT ГЕНЕРАТОРЫ ЖӘНЕ ІСКЕ ҚОСҚЫШ", modeModel: "Модельдегі фото", modeChildren: "Балалар", modeObject: "Зат", modeCosmetics: "Косметика",
|
| 2187 |
section1Title: "Модель параметрлері", section2Title: "Сахна және стиль", section3Title: "Композиция және бөлшектер", section1ObjectTitle: "Нысан параметрлері",
|
| 2188 |
-
section2ObjectTitle: "Сахна және стиль", section1CosmeticsTitle: "Өнім және модель",
|
|
|
|
| 2189 |
objectWithModelCheck: "Модельмен", objectOnMannequinCheck: "Манекенде", celebrityCheck: "Атақты адамдар", marketplaceCheck: "Маркетплейс режимі",
|
| 2190 |
celebrityName: "Атақты адам", gender: "Жынысы", gender_female: "Әйел", gender_male: "Ер", age: "Жасы", age_teen: "14-18 жас",
|
| 2191 |
age_20_25: "20-25 жас", age_25_30: "25-30 жас", age_30_40: "30-40 жас", age_40_50: "40-50 жас", nationality: "Сыртқы келбеті/Этнос",
|
|
@@ -2211,7 +2458,8 @@ const translations = {
|
|
| 2211 |
childDetailsPlaceholder: "Мысалы: сыдырылған және металл түймелері бар джинсы комбинезон, вельвет жейде",
|
| 2212 |
additionalDirectivesPlaceholderChild: "Мысалы: 'organic cotton' мәтіні бар инфографика қосу", objectNameLabel: "Заттың атауы/сипаттамасы",
|
| 2213 |
objectNamePlaceholder: "Мысалы: 'Noir' иіссу құтысы, 'CyberRun' кроссовкасы, 'Classic Timepiece' сағаты", cosmeticsNameLabel: "Косметика атауы/сипаттамасы",
|
| 2214 |
-
cosmeticsNamePlaceholder: "Мысалы: қызыл далап 'Ruby', тоналды крем 'Glow', қабақ бояуы",
|
|
|
|
| 2215 |
additionalDirectivesPlaceholderObject: "Мысалы: 'new collection' инфографикасын қосу, заттың левитациясы",
|
| 2216 |
additionalDirectivesPlaceholderCosmetics: "Мысалы: терінің жарқырауына назар аудару, еріннің макро-кадры", detailsVariations: "Бөлшектер және вариациялар",
|
| 2217 |
detailsCollage: "Үлкейтіл��ен бөлшектері бар коллаж (мата, фурнитура)", detailsCollageObject: "Үлкейтілген бөлшектері бар коллаж (материал, текстура)",
|
|
@@ -2225,6 +2473,7 @@ const translations = {
|
|
| 2225 |
wan27Check: "Wan 2.7 (Қысқа промпт)", wan27Tooltip: 'Бұл параметрді белгілеп, жаңа сапа түрін пайдалана аласыз, іздеу жолағына "27" деп жазыңыз, сонда wan 2.7 image pro шығады',
|
| 2226 |
flagship_styles: {'studio': 'Студия (люкс)', 'product_focus_light': 'Маркетплейс', 'street': 'Стрит-стайл', 'lookbook': 'Лукбук', 'minimalism': 'Минимализм', 'urban_loft_lifestyle': 'Лофт', 'elevator_mirror_selfie': 'Лифттегі селфи', 'car_interior_lifestyle': 'Авто салонында', 'golden_hour_field': 'Алтын сағат', 'messy_bedroom_morning': 'Жатын бөлме', 'vintage_35mm_film': 'Винтаж пленка', 'paparazzi_street_flash': 'Папарацци', 'cafe_window_contemplation': 'Кафеде', 'rooftop_party_sunset': 'Шатырдағы кеш', 'bookstore_aisle_cozy': 'Кітап дүкені', 'custom_background_fusion': 'Өз фоныңыз (профи)', 'polaroid_snapshot': 'Полароид', 'creative': 'Креатив', 'retro': 'Ретро', 'boho': 'Бохо', 'forest_nymph': 'Орман', 'desert_expedition': 'Шөл', 'gothic': 'Готика', 'editorial': 'Эдиториал', 'film_noir': 'Нуар', 'cottagecore': 'Коттеджкор', 'royalcore': 'Сарай', 'solarpunk': 'Соларпанк', 'skater': 'Скейтер', 'vibrant_market': 'Базар', 'cyberpunk': 'Киберпанк', 'fantasy': 'Фэнтези', 'surreal_dreamscape': 'Сюрреализм', 'techwear': 'Techwear', 'home_casual': 'Үй', 'backstage': 'Бэкстейдж', 'road_trip': 'Роуд-трип', 'rainy_day': 'Жаңбыр', 'night_flash': 'Түн (жарқыл)', 'tropical_resort': 'Курорт', 'beach': 'Жағажай', 'alaska_winter': 'Аляска (қыс)', 'football_field': 'Футбол алаңы', 'volcanic_ash_desert': 'Жанартау (Исландия)', 'salt_flats_mirage': 'Тұзды алқап (Боливия)', 'highlands_majesty': 'Таулы аймақ (Шотландия)'},
|
| 2227 |
object_styles: {'studio': 'Студия', 'minimalism': 'Минимализм', 'nature': 'Табиғат', 'luxe': 'Люкс', 'dark': 'Драма', 'geometric': 'Геометрия', 'floating': 'Левитация', 'lifestyle': 'Лайфстайл', 'splash': 'Шашырау', 'handmade': 'Шеберхана', 'alaska_winter': 'Аляска (қыс)', 'football_field': 'Футбол алаңы', 'volcanic_ash_desert': 'Жанартау (Исландия)', 'salt_flats_mirage': 'Тұзды алқап (Боливия)', 'highlands_majesty': 'Таулы аймақ (Шотландия)'},
|
|
|
|
| 2228 |
female_body_types: {'standard': 'Стандартты', 'very_slim': 'Өте сымбатты (модель)', 'slim': 'Сымбатты (табиғи)', 'slim_busty': 'Сымбатты, үлкен кеуделі', 'athletic': 'Атлетикалық', 'petite': 'Кішкентай', 'hourglass': 'Құм сағат', 'fit_curvy': 'Спорттық (curvy)', 'plus_size': 'Толық', 'curvy': 'Жұмсақ (curvy)', 'full_figured': 'Плюс-сайз', 'pregnant': 'Жүкті (жүкті әйелдерге арналған киім)'},
|
| 2229 |
male_body_types: {'athletic': 'Атлетикалық', 'lean and toned': 'Шымыр', 'muscular build': 'Бұлшықетті', 'broad build': 'Ірі', 'slim build': 'Арық'},
|
| 2230 |
female_hairstyles: {'long wavy hair': 'Ұзын толқынды', 'short bob cut': 'Қысқа боб', 'elegant updo': 'Элегантты жинақ', 'straight shoulder-length hair': 'Иыққа дейін түзу', 'pixie cut': 'Пикси', 'messy bun': 'Салғырт жинақ', 'high ponytail': 'Биік құйрық', 'braids': 'Өрімдер', 'curly afro': 'Афро бұйра', 'bangs': 'Кекілмен', 'layered haircut': 'Каскад', 'wearing a hijab': 'Орамалда'},
|
|
@@ -2238,9 +2487,10 @@ const translations = {
|
|
| 2238 |
celebrities_male: c_m, celebrities_female: c_f, child_celebrities_male: cc_m, child_celebrities_female: cc_f
|
| 2239 |
},
|
| 2240 |
kg: {
|
| 2241 |
-
subtitle: "PROMPT ГЕНЕРАТОРУ ЖАНА ИШКЕ КИРГИЗГИЧ", modeModel: "Моделдеги сүрөт", modeChildren: "Балдар", modeObject: "Буюм", modeCosmetics: "Косметика",
|
| 2242 |
section1Title: "Моделдин параметрлери", section2Title: "Сахна жана Стиль", section3Title: "Композиция жана Деталдар", section1ObjectTitle: "Объекттин параметрлери",
|
| 2243 |
-
section2ObjectTitle: "Сахна жана Стиль", section1CosmeticsTitle: "Продукт жана Модель",
|
|
|
|
| 2244 |
objectWithModelCheck: "Модель менен", objectOnMannequinCheck: "Манекенде", celebrityCheck: "Атактуулар", marketplaceCheck: "Маркетплейс режимі",
|
| 2245 |
celebrityName: "Атактуу", gender: "Жынысы", gender_female: "Аял", gender_male: "Эркек", age: "Жашы", age_teen: "14-18 жаш",
|
| 2246 |
age_20_25: "20-25 жаш", age_25_30: "25-30 жаш", age_30_40: "30-40 жаш", age_40_50: "40-50 жас", nationality: "Сырткы көрүнүшү/Этнос",
|
|
@@ -2266,7 +2516,8 @@ const translations = {
|
|
| 2266 |
childDetailsPlaceholder: "Мисалы: эскирген жана металл топчулары бар джинсы комбинезон, вельвет көйнөк",
|
| 2267 |
additionalDirectivesPlaceholderChild: "Мисалы: 'organic cotton' тексти менен инфографика кошуу", objectNameLabel: "Буюмдун аталышы/сыпаттамасы",
|
| 2268 |
objectNamePlaceholder: "Мисалы: 'Noir' атыр флакону, 'CyberRun' кроссовкасы, 'Classic Timepiece' сааты", cosmeticsNameLabel: "Косметиканын аталышы/сыпаттамасы",
|
| 2269 |
-
cosmeticsNamePlaceholder: "Мисалы: кызыл помада 'Ruby', тоналдык крем 'Glow', көз боёгу",
|
|
|
|
| 2270 |
additionalDirectivesPlaceholderObject: "Мисалы: 'new collection' инфографикасын кошуу, буюмдун левитациясы",
|
| 2271 |
additionalDirectivesPlaceholderCosmetics: "Мисалы: теринин жаркырашына басым, эриндин макро-кадры", detailsVariations: "Деталдар жана вариациялар",
|
| 2272 |
detailsCollage: "Чоңойтулган деталдары менен коллаж (кездеме, фурнитура)", detailsCollageObject: "Чоңойтулган деталдары менен коллаж (материал, текстура)",
|
|
@@ -2280,6 +2531,7 @@ const translations = {
|
|
| 2280 |
wan27Check: "Wan 2.7 (Кыска промпт)", wan27Tooltip: 'Бул параметрди белгилеп, жаңы сапат түрүн колдоно аласыз, издөө тилкесине "27" деп жазыңыз, ошондо wan 2.7 image pro чыгат',
|
| 2281 |
flagship_styles: {'studio': 'Студия (люкс)', 'product_focus_light': 'Маркетплейс', 'street': 'Стрит-стайл', 'lookbook': 'Лукбук', 'minimalism': 'Минимализм', 'urban_loft_lifestyle': 'Лофт', 'elevator_mirror_selfie': 'Лифттегі селфи', 'car_interior_lifestyle': 'Авто салонунда', 'golden_hour_field': 'Алтын саат', 'messy_bedroom_morning': 'Уктоочу бөлмө', 'vintage_35mm_film': 'Винтаж пленкасы', 'paparazzi_street_flash': 'Папарацци', 'cafe_window_contemplation': 'Кафеде', 'rooftop_party_sunset': 'Чатырдагы кече', 'bookstore_aisle_cozy': 'Китеп дүкөнү', 'custom_background_fusion': 'Өз фонуңуз (профи)', 'polaroid_snapshot': 'Полароид', 'creative': 'Креатив', 'retro': 'Ретро', 'boho': 'Бохо', 'forest_nymph': 'Токой', 'desert_expedition': 'Чөл', 'gothic': 'Готика', 'editorial': 'Эдиториал', 'film_noir': 'Нуар', 'cottagecore': 'Коттеджкор', 'royalcore': 'Сарай', 'solarpunk': 'Соларпанк', 'skater': 'Скейтер', 'vibrant_market': 'Базар', 'cyberpunk': 'Киберпанк', 'fantasy': 'Ф��нтези', 'surreal_dreamscape': 'Сюрреализм', 'techwear': 'Techwear', 'home_casual': 'Үй', 'backstage': 'Бэкстейдж', 'road_trip': 'Роуд-трип', 'rainy_day': 'Жамгыр', 'night_flash': 'Түн (жарк)', 'tropical_resort': 'Курорт', 'beach': 'Пляж', 'alaska_winter': 'Аляска (кыш)', 'football_field': 'Футбол талаасы', 'volcanic_ash_desert': 'Вулкан (Исландия)', 'salt_flats_mirage': 'Туздуу түздүк (Боливия)', 'highlands_majesty': 'Тоолуу аймак (Шотландия)'},
|
| 2282 |
object_styles: {'studio': 'Студия', 'minimalism': 'Минимализм', 'nature': 'Жаратылыш', 'luxe': 'Люкс', 'dark': 'Драма', 'geometric': 'Геометрия', 'floating': 'Левитация', 'lifestyle': 'Лайфстайл', 'splash': 'Чачыроо', 'handmade': 'Устакана', 'alaska_winter': 'Аляска (кыш)', 'football_field': 'Футбол талаасы', 'volcanic_ash_desert': 'Вулкан (Исландия)', 'salt_flats_mirage': 'Туздуу түздүк (Боливия)', 'highlands_majesty': 'Тоолуу аймак (Шотландия)'},
|
|
|
|
| 2283 |
female_body_types: {'standard': 'Стандарттуу', 'very_slim': 'Абдан сымбаттуу (модель)', 'slim': 'Сымбаттуу (табигый)', 'slim_busty': 'Сымбаттуу, чоң төштүү', 'athletic': 'Атлетикалык', 'petite': 'Кичинекей', 'hourglass': 'Кум саат', 'fit_curvy': 'Спорттук (curvy)', 'plus_size': 'Толук', 'curvy': 'Жумшак (curvy)', 'full_figured': 'Плюс-сайз', 'pregnant': 'Кош бойлуу (кош бойлуулар үчүн кийим)'},
|
| 2284 |
male_body_types: {'athletic': 'Атлетикалык', 'lean and toned': 'Чымыр', 'muscular build': 'Булчуңдуу', 'broad build': 'Чоң', 'slim build': 'Арык'},
|
| 2285 |
female_hairstyles: {'long wavy hair': 'Узун толкундуу', 'short bob cut': 'Кыска боб', 'elegant updo': 'Элеганттуу түймөк', 'straight shoulder-length hair': 'Ийинге чейин түз', 'pixie cut': 'Пикси', 'messy bun': 'Шалакы түймөк', 'high ponytail': 'Бийик куйрук', 'braids': 'Өрүмдөр', 'curly afro': 'Афро тармал', 'bangs': 'Кекил менен', 'layered haircut': 'Каскад', 'wearing a hijab': 'Жоолукта'},
|
|
@@ -2305,7 +2557,10 @@ const fieldsToPersist = [
|
|
| 2305 |
'object_shotType', 'wan27Check_object',
|
| 2306 |
'cosmetics_gender', 'cosmetics_age', 'cosmetics_nationality', 'cosmetics_bodyType', 'cosmetics_hairColor', 'cosmetics_hairstyle', 'cosmetics_eyeColor',
|
| 2307 |
'hasBeard_cosmetics', 'beardStyle_cosmetics', 'hasTattoos_cosmetics', 'tattooStyle_cosmetics', 'tattooCoverage_cosmetics',
|
| 2308 |
-
'cosmetics_shotType', 'wan27Check_cosmetics'
|
|
|
|
|
|
|
|
|
|
| 2309 |
];
|
| 2310 |
|
| 2311 |
function saveSettings() {
|
|
@@ -2342,15 +2597,16 @@ function loadSettings() {
|
|
| 2342 |
updateChildModelOptions();
|
| 2343 |
updateObjectModelOptions();
|
| 2344 |
updateCosmeticsModelOptions();
|
|
|
|
| 2345 |
|
| 2346 |
-
['bodyType', 'hairstyle', 'beardStyle_model', 'child_hairstyle', 'object_bodyType', 'object_hairstyle', 'beardStyle_object', 'cosmetics_bodyType', 'cosmetics_hairstyle', 'beardStyle_cosmetics'].forEach(id => {
|
| 2347 |
const el = document.getElementById(id);
|
| 2348 |
if (el && settings[id] !== undefined) {
|
| 2349 |
el.value = settings[id];
|
| 2350 |
}
|
| 2351 |
});
|
| 2352 |
|
| 2353 |
-
['hasBeard_model', 'hasTattoos_model', 'hasBeard_object', 'hasTattoos_object', 'hasBeard_cosmetics', 'hasTattoos_cosmetics'].forEach(id => {
|
| 2354 |
const el = document.getElementById(id);
|
| 2355 |
if(el) el.dispatchEvent(new Event('change'));
|
| 2356 |
});
|
|
@@ -2390,15 +2646,18 @@ function setLanguage(lang) {
|
|
| 2390 |
populateStyles('childStyleSelector', langData.flagship_styles);
|
| 2391 |
populateStyles('objectStyleSelector', langData.object_styles);
|
| 2392 |
populateStyles('cosmeticsStyleSelector', langData.object_styles);
|
|
|
|
| 2393 |
|
| 2394 |
updateModelOptions();
|
| 2395 |
updateObjectModelOptions();
|
| 2396 |
updateCosmeticsModelOptions();
|
|
|
|
| 2397 |
updateChildModelOptions();
|
| 2398 |
updateCelebrityOptions();
|
| 2399 |
updateChildCelebrityOptions();
|
| 2400 |
updateObjectCelebrityOptions();
|
| 2401 |
updateCosmeticsCelebrityOptions();
|
|
|
|
| 2402 |
|
| 2403 |
document.querySelectorAll('.lang-switcher button').forEach(btn => btn.classList.remove('active'));
|
| 2404 |
document.getElementById(`lang-${lang}`).classList.add('active');
|
|
@@ -2503,6 +2762,31 @@ function updateCosmeticsModelOptions() {
|
|
| 2503 |
populateSelect(document.getElementById('tattooCoverage_cosmetics'), langData.tattoo_coverages);
|
| 2504 |
}
|
| 2505 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2506 |
function updateChildModelOptions() {
|
| 2507 |
const lang = localStorage.getItem('synkrisLang') || 'ru';
|
| 2508 |
const langData = translations[lang];
|
|
@@ -2563,6 +2847,14 @@ function updateCosmeticsCelebrityOptions() {
|
|
| 2563 |
populateSelect(select, gender === 'female' ? langData.celebrities_female : langData.celebrities_male);
|
| 2564 |
}
|
| 2565 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2566 |
|
| 2567 |
function toggleOwnModel(isOwnModel) {
|
| 2568 |
const modelParamsContainer = document.getElementById('modelParamsContainer');
|
|
@@ -2841,7 +3133,7 @@ function getPrompt() {
|
|
| 2841 |
prompt += `\\n\\n**COMPOSITION DIRECTIVE (4-VIEW COLLAGE):** Create a professional 4-view collage in a single image. The collage must clearly show the model wearing the garment from four distinct angles: full front view, full back view, full side view, and three-quarter view. Maintain consistent lighting and background across all views.`;
|
| 2842 |
}
|
| 2843 |
if (wantsVariantsCollage) {
|
| 2844 |
-
prompt += `\\n\\n**COMPOSITION DIRECTIVE (VARIANTS COLLAGE):** In a single, cohesive frame, display multiple models (or one model in different poses) showcasing the garment in ALL the different colors present in the reference image. **CRITICAL COLOR PROTOCOL: Use ONLY the exact colors shown in the reference photo. You must include every color present, do not duplicate any colors, and absolutely DO NOT hallucinate, invent, or add new colors that are not explicitly present in the source image.** The result must be
|
| 2845 |
}
|
| 2846 |
if (wantsTextOverlay && textToOverlay) {
|
| 2847 |
prompt += `\\n\\n**GRAPHIC OVERLAY:** Add the following text: "${textToOverlay}". Integrate it stylishly using modern, clean typography. The text should be legible but artistically placed to complement the image, not dominate it. Minimalist icons that enhance the text are permissible.`;
|
|
@@ -3082,6 +3374,119 @@ function getPrompt() {
|
|
| 3082 |
if (wantsLogoOverlay && logoToOverlay) {
|
| 3083 |
prompt += `\\n\\n**LOGO INTEGRATION DIRECTIVE:** A high-resolution logo described as '${logoToOverlay}' is tastefully placed on the image, typically in a corner, ensuring it complements the composition without being distracting.`;
|
| 3084 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3085 |
}
|
| 3086 |
|
| 3087 |
if (additionalPrompt) {
|
|
@@ -3091,7 +3496,6 @@ function getPrompt() {
|
|
| 3091 |
return `${prompt} ${aspectRatio}`.trim();
|
| 3092 |
}
|
| 3093 |
|
| 3094 |
-
|
| 3095 |
async function processAndOpen() {
|
| 3096 |
const lang = localStorage.getItem('synkrisLang') || 'ru';
|
| 3097 |
const langData = translations[lang];
|
|
@@ -3139,7 +3543,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|
| 3139 |
}
|
| 3140 |
});
|
| 3141 |
|
| 3142 |
-
['model', 'children', 'object', 'cosmetics'].forEach(prefix => {
|
| 3143 |
const textCheck = document.getElementById(`${prefix}_textOverlayCheck`);
|
| 3144 |
const textInput = document.getElementById(`${prefix}_textOverlayInput`);
|
| 3145 |
const logoCheck = document.getElementById(`logoOverlayCheck_${prefix}`);
|
|
@@ -3193,15 +3597,12 @@ document.addEventListener('DOMContentLoaded', () => {
|
|
| 3193 |
if (this.checked) {
|
| 3194 |
objectOnMannequinCheck.checked = false;
|
| 3195 |
}
|
| 3196 |
-
|
| 3197 |
const isChecked = this.checked;
|
| 3198 |
const celebrityToggle = document.getElementById('objectCelebrityToggle');
|
| 3199 |
const celebrityParams = document.getElementById('objectCelebrityParamsContainer');
|
| 3200 |
const modelParams = document.getElementById('objectModelParamsContainer');
|
| 3201 |
const isCelebrityChecked = document.getElementById('objectCelebrityCheck').checked;
|
| 3202 |
-
|
| 3203 |
celebrityToggle.style.display = isChecked ? 'flex' : 'none';
|
| 3204 |
-
|
| 3205 |
if (isChecked && isCelebrityChecked) {
|
| 3206 |
modelParams.style.display = 'none';
|
| 3207 |
celebrityParams.classList.add('active');
|
|
@@ -3212,14 +3613,12 @@ document.addEventListener('DOMContentLoaded', () => {
|
|
| 3212 |
modelParams.style.display = 'none';
|
| 3213 |
celebrityParams.classList.remove('active');
|
| 3214 |
}
|
| 3215 |
-
|
| 3216 |
if (!isChecked) {
|
| 3217 |
document.getElementById('objectCelebrityCheck').checked = false;
|
| 3218 |
celebrityParams.classList.remove('active');
|
| 3219 |
}
|
| 3220 |
});
|
| 3221 |
|
| 3222 |
-
|
| 3223 |
objectOnMannequinCheck.addEventListener('change', function() {
|
| 3224 |
if (this.checked && objectWithModelCheck.checked) {
|
| 3225 |
objectWithModelCheck.checked = false;
|
|
@@ -3244,11 +3643,49 @@ document.addEventListener('DOMContentLoaded', () => {
|
|
| 3244 |
updateCosmeticsCelebrityOptions();
|
| 3245 |
}
|
| 3246 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3247 |
|
| 3248 |
-
|
| 3249 |
-
|
| 3250 |
-
|
| 3251 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3252 |
const hasBeardCheckbox = document.getElementById(`hasBeard_${prefix}`);
|
| 3253 |
if(hasBeardCheckbox) {
|
| 3254 |
hasBeardCheckbox.addEventListener('change', function() {
|
|
|
|
| 79 |
2. **MODEL SYNTHESIS & PRODUCT APPLICATION:** Generate a hyper-realistic human model. Synthesize lifelike skin with visible pores, subtle imperfections, and realistic micro-textures. Crucially, the cosmetic product MUST be applied flawlessly to the model's face or body (e.g., lipstick on lips, eyeshadow on eyes, foundation on skin), demonstrating the exact shade, texture, and finish of the real product. The model must also elegantly hold the product. ABSOLUTELY NO WAXY, PLASTIC, OR GLASS-LIKE SKIN TEXTURES.
|
| 80 |
3. **ZERO DEVIATION PROTOCOL:** Absolutely no artistic interpretation of the product's color or texture. The applied makeup must be a 1:1 match to the product inside the packaging. No waxy skin.
|
| 81 |
4. **STUDIO LIGHTING MASTERY:** High-end beauty lighting. Soft, diffused, yet shape-defining highlights to accentuate the skin texture and the cosmetic product's finish without creating a fake glossy CGI effect.""",
|
| 82 |
+
"furniture_base": """**MANDATORY: RAW UNEDITED MASTERPIECE 16K HYPER-PHOTOREALISTIC IMAGE. NO TEXT. ABSOLUTELY NO CGI RENDER LOOK, NO PLASTIC AI LOOK.**
|
| 83 |
+
**CORE DIRECTIVE: YOU ARE AN ELITE INTERIOR & FURNITURE VISUALIZATION ENGINE.**
|
| 84 |
+
1. **FURNITURE IDENTIFICATION & DIGITAL TWINNING (ABSOLUTE FIDELITY):** From the uploaded furniture/interior image, flawlessly identify the main piece. Execute a perfect digital twin replication, as if shot for a high-end architectural digest or luxury furniture catalog. Every dimension, proportion, material texture (wood grain, leather pores, fabric weave, metal brushed finish), and color gamut must be rendered with absolute, indistinguishable accuracy.
|
| 85 |
+
2. **ENVIRONMENT & LIGHTING MASTERY:** Integrate the furniture into the requested style perfectly. Use physically accurate global illumination, ray-traced reflections, and realistic shadows. The lighting should emphasize the texture, volume, and premium quality of the furniture.
|
| 86 |
+
3. **ZERO DEVIATION PROTOCOL:** Do not alter the fundamental design, proportions, or distinct materials of the source furniture piece. The replication must be photorealistic and perfectly to scale within its environment.""",
|
| 87 |
"marketplace_mode_base": """\n\n**COMPOSITION DIRECTIVE (MARKETPLACE HERO-SHOT MODE):** YOU ARE A WORLD-CLASS E-COMMERCE ART DIRECTOR. The primary goal is to create a visually arresting "hero image" for a product listing that maximizes click-through rates. The main subject must be perfectly rendered and visually dominant.
|
| 88 |
- **Dynamic Background & Effects:** The background is clean and non-distracting but enhanced with sophisticated, context-aware special effects. **MANDATORY: NO TEXT OR GRAPHICAL ICONS/LOGOS.**
|
| 89 |
- **If the product is clothing/wearable:** Generate elegant swirls of fabric, subtle particle effects, or abstract light patterns that complement the garment's color and material.
|
|
|
|
| 156 |
"volcanic_ash_desert": "The product is presented on a piece of dramatic, jet-black volcanic rock on a black sand beach. The background is a soft-focus view of misty, crashing ocean waves. Moody, diffused light creates sophisticated reflections on the product's surface, emphasizing its premium quality and resilience.",
|
| 157 |
"salt_flats_mirage": "The product rests on the stark, white, crystalline surface of a salt flat. A long, sharp shadow is cast by the intense sun. The background is a minimalist, out-of-focus horizon where the white ground meets a deep blue sky, creating a visually clean and high-impact composition.",
|
| 158 |
"highlands_majesty": "The product is placed on an ancient, mossy stone, with the misty, rolling hills of the Scottish Highlands blurred in the background. The lighting is soft and natural, with realistic water droplets clinging to the product's surface, evoking a sense of enduring, natural luxury."
|
| 159 |
+
},
|
| 160 |
+
"furniture_styles": {
|
| 161 |
+
"scandinavian_minimalism": "Bright, airy Scandinavian minimalism. White walls, natural light wood (oak, ash), clean lines, and a focus on functional beauty. Soft, diffused natural light from large windows.",
|
| 162 |
+
"mid_century_modern": "Iconic Mid-Century Modern interior. Warm walnut woods, muted earthy tones (mustard, olive, burnt orange), and organic shapes. Retro-chic lighting and a stylish, lived-in atmosphere.",
|
| 163 |
+
"industrial_loft": "Raw, edgy industrial loft setting. Exposed red brick walls, large steel-framed windows, concrete floors, and visible piping. Dramatic, contrasty natural light.",
|
| 164 |
+
"bohemian_chic": "Lush, eclectic Bohemian chic room. Rich textures, layered Moroccan rugs, abundant indoor plants, macrame, and warm, earthy colors. Golden hour sunlight streaming in.",
|
| 165 |
+
"luxury_art_deco": "Opulent Art Deco interior. Geometric patterns, rich jewel tones (emerald, sapphire), brass and gold accents, luxurious velvet, and polished marble. Sophisticated, moody studio lighting.",
|
| 166 |
+
"wabi_sabi": "Tranquil Wabi-Sabi aesthetic. Emphasizing the beauty of imperfection. Textured plaster walls, raw stone, weathered wood, and muted, natural, organic colors. Soft, directional, contemplative light.",
|
| 167 |
+
"cyberpunk_neon": "Futuristic Cyberpunk apartment interior. Dark, sleek surfaces illuminated by vibrant neon lights (magenta, cyan, electric blue). High-tech elements integrated into the decor.",
|
| 168 |
+
"surreal_dreamscape": "Avant-garde, surreal dreamscape interior. Impossible architecture, floating elements, or a furniture piece placed in an unexpected, dreamlike environment (e.g., a bed in a shallow, perfectly still pool of water reflecting the sky). Ethereal lighting.",
|
| 169 |
+
"cozy_cabin": "Warm, rustic winter cabin interior. Log walls, a roaring stone fireplace, thick knit blankets, and animal skin rugs. Warm, cozy firelight and soft ambient light.",
|
| 170 |
+
"classic_elegance": "Timeless classic European elegance. High ceilings, intricate crown molding, wainscoting, parquet floors, and antique accents. Bright, classical interior lighting.",
|
| 171 |
+
"modern_outdoor": "Luxurious modern outdoor patio or terrace. High-end weatherproof materials, sleek lines, infinity pool in the background, surrounded by manicured landscaping. Bright, sunny, resort-style lighting."
|
| 172 |
}
|
| 173 |
}
|
| 174 |
with open(PROMPTS_FILE, 'w', encoding='utf-8') as f:
|
|
|
|
| 849 |
|
| 850 |
.mode-selector {
|
| 851 |
display: grid;
|
| 852 |
+
grid-template-columns: repeat(5, 1fr);
|
| 853 |
margin-bottom: 35px;
|
| 854 |
background-color: var(--input-bg);
|
| 855 |
border-radius: 12px;
|
| 856 |
padding: 6px;
|
| 857 |
border: 1px solid var(--border);
|
| 858 |
+
gap: 4px;
|
| 859 |
}
|
| 860 |
|
| 861 |
.mode-btn {
|
| 862 |
+
padding: 14px 8px;
|
| 863 |
background-color: transparent;
|
| 864 |
border: none;
|
| 865 |
color: var(--text-secondary);
|
|
|
|
| 1208 |
h1 { font-size: 2rem; }
|
| 1209 |
.form-grid { grid-template-columns: 1fr; gap: 20px; }
|
| 1210 |
.full-width { grid-column: span 1; }
|
| 1211 |
+
.mode-selector { grid-template-columns: repeat(3, 1fr); gap: 5px; }
|
| 1212 |
.mode-btn { font-size: 0.75rem; padding: 12px 5px; }
|
| 1213 |
.style-grid { grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); }
|
| 1214 |
.top-toggles { flex-direction: column; gap: 15px; }
|
| 1215 |
.celebrity-grid { grid-template-columns: 1fr; grid-column: span 1; gap: 20px; }
|
| 1216 |
}
|
| 1217 |
+
@media (max-width: 450px) {
|
| 1218 |
+
.mode-selector { grid-template-columns: repeat(2, 1fr); }
|
| 1219 |
+
}
|
| 1220 |
</style>
|
| 1221 |
</head>
|
| 1222 |
<body>
|
|
|
|
| 1237 |
<button id="modeChildrenBtn" class="mode-btn" onclick="switchMode('children')" data-lang-key="modeChildren">Дети</button>
|
| 1238 |
<button id="modeObjectBtn" class="mode-btn" onclick="switchMode('object')" data-lang-key="modeObject">Предмет</button>
|
| 1239 |
<button id="modeCosmeticsBtn" class="mode-btn" onclick="switchMode('cosmetics')" data-lang-key="modeCosmetics">Косметика</button>
|
| 1240 |
+
<button id="modeFurnitureBtn" class="mode-btn" onclick="switchMode('furniture')" data-lang-key="modeFurniture">Мебель</button>
|
| 1241 |
</div>
|
| 1242 |
|
| 1243 |
<form id="promptForm">
|
|
|
|
| 1615 |
<select id="child_pose">
|
| 1616 |
<option value="running joyfully in a field" data-lang-key="child_pose_running">Бежит по полю</option>
|
| 1617 |
<option value="playing enthusiastically with wooden toys on the floor" data-lang-key="child_pose_playing">Играет с игрушками</option>
|
| 1618 |
+
<option value="sitting and curiously looking at a picture book" data-lang-key="child_pose_reading">Сидит с книгой</option>
|
| 1619 |
<option value="posing for a candid school photo, smiling naturally" selected data-lang-key="child_pose_posing">Позирует для фото</option>
|
| 1620 |
<option value="laughing and jumping on a bed" data-lang-key="child_pose_jumping">Прыгает на кровати</option>
|
| 1621 |
</select>
|
|
|
|
| 2130 |
</div>
|
| 2131 |
</div>
|
| 2132 |
|
| 2133 |
+
<div id="furnitureMode" class="form-mode">
|
| 2134 |
+
<div class="form-section">
|
| 2135 |
+
<h2><span class="section-number">1</span> <span data-lang-key="section1FurnitureTitle">Параметры мебели</span></h2>
|
| 2136 |
+
<div class="form-grid">
|
| 2137 |
+
<div class="form-group full-width">
|
| 2138 |
+
<label for="furniture_name" data-lang-key="furnitureNameLabel">Название/Описание мебели</label>
|
| 2139 |
+
<textarea id="furniture_name" data-lang-key-placeholder="furnitureNamePlaceholder"></textarea>
|
| 2140 |
+
</div>
|
| 2141 |
+
<div class="form-group full-width">
|
| 2142 |
+
<div class="checkbox-group top-toggles">
|
| 2143 |
+
<div class="checkbox-item">
|
| 2144 |
+
<input type="checkbox" id="furnitureWithModelCheck">
|
| 2145 |
+
<label for="furnitureWithModelCheck" data-lang-key="objectWithModelCheck">С моделью</label>
|
| 2146 |
+
</div>
|
| 2147 |
+
<div class="checkbox-item" id="furnitureCelebrityToggle" style="display: none;">
|
| 2148 |
+
<input type="checkbox" id="furnitureCelebrityCheck">
|
| 2149 |
+
<label for="furnitureCelebrityCheck" data-lang-key="celebrityCheck">Знаменитости</label>
|
| 2150 |
+
</div>
|
| 2151 |
+
<div class="checkbox-item">
|
| 2152 |
+
<input type="checkbox" id="wan27Check_furniture">
|
| 2153 |
+
<label for="wan27Check_furniture" data-lang-key="wan27Check">Wan 2.7 (Короткий промпт)</label>
|
| 2154 |
+
<span class="tooltip-container">
|
| 2155 |
+
<i class="fas fa-question-circle"></i>
|
| 2156 |
+
<span class="tooltip-text" data-lang-key="wan27Tooltip">вы можете отметить этот параметр и пользоваться новым видом качества , в поле выбора качества в поиске напишите "27" и у вас выйдет wan 2.7 image pro</span>
|
| 2157 |
+
</span>
|
| 2158 |
+
</div>
|
| 2159 |
+
</div>
|
| 2160 |
+
</div>
|
| 2161 |
+
|
| 2162 |
+
<div id="furnitureCelebrityParamsContainer" class="celebrity-grid">
|
| 2163 |
+
<div class="form-group">
|
| 2164 |
+
<label for="furnitureCelebrityGender" data-lang-key="gender">Пол</label>
|
| 2165 |
+
<select id="furnitureCelebrityGender" onchange="updateFurnitureCelebrityOptions()">
|
| 2166 |
+
<option value="female" data-lang-key="gender_female">Женщина</option>
|
| 2167 |
+
<option value="male" selected data-lang-key="gender_male">Мужчина</option>
|
| 2168 |
+
</select>
|
| 2169 |
+
</div>
|
| 2170 |
+
<div class="form-group">
|
| 2171 |
+
<label for="furnitureCelebrityName" data-lang-key="celebrityName">Знаменитость</label>
|
| 2172 |
+
<select id="furnitureCelebrityName"></select>
|
| 2173 |
+
</div>
|
| 2174 |
+
</div>
|
| 2175 |
+
|
| 2176 |
+
<div id="furnitureModelParamsContainer" class="form-grid full-width" style="padding:0; gap:25px; display: none;">
|
| 2177 |
+
<div class="form-group full-width" style="margin-bottom:-10px">
|
| 2178 |
+
<button type="button" class="button-link" onclick="resetSettings()" data-lang-key="resetModelSettingsBtn">Сбросить настройки модели</button>
|
| 2179 |
+
</div>
|
| 2180 |
+
<div class="form-group">
|
| 2181 |
+
<label for="furniture_gender" data-lang-key="gender">Пол</label>
|
| 2182 |
+
<select id="furniture_gender" onchange="updateFurnitureModelOptions()">
|
| 2183 |
+
<option value="female" data-lang-key="gender_female">Женщина</option>
|
| 2184 |
+
<option value="male" data-lang-key="gender_male">Мужчина</option>
|
| 2185 |
+
</select>
|
| 2186 |
+
</div>
|
| 2187 |
+
<div class="form-group">
|
| 2188 |
+
<label for="furniture_age" data-lang-key="age">Возраст</label>
|
| 2189 |
+
<select id="furniture_age">
|
| 2190 |
+
<option value="20-25 years old" selected data-lang-key="age_20_25">20-25 лет</option>
|
| 2191 |
+
<option value="25-30 years old" data-lang-key="age_25_30">25-30 лет</option>
|
| 2192 |
+
<option value="30-40 years old" data-lang-key="age_30_40">30-40 лет</option>
|
| 2193 |
+
<option value="40-50 years old" data-lang-key="age_40_50">40-50 лет</option>
|
| 2194 |
+
</select>
|
| 2195 |
+
</div>
|
| 2196 |
+
<div class="form-group">
|
| 2197 |
+
<label for="furniture_nationality" data-lang-key="nationality">Внешность/Этнос</label>
|
| 2198 |
+
<select id="furniture_nationality">
|
| 2199 |
+
<option value="Eastern European" data-lang-key="nat_eastern_european">Восточная Европа</option>
|
| 2200 |
+
<option value="Northern European" data-lang-key="nat_northern_european">Скандинавская</option>
|
| 2201 |
+
<option value="Mediterranean" data-lang-key="nat_mediterranean">Средиземноморская</option>
|
| 2202 |
+
<option value="Asian" data-lang-key="nat_asian">Азиатская</option>
|
| 2203 |
+
<option value="Central Asian" data-lang-key="nat_central_asian">Центральноазиатская</option>
|
| 2204 |
+
<option value="South Asian" data-lang-key="nat_south_asian">Южно-Азиатская (Индия)</option>
|
| 2205 |
+
<option value="Middle Eastern" data-lang-key="nat_middle_eastern">Ближневосточная</option>
|
| 2206 |
+
<option value="Caucasian" data-lang-key="nat_caucasian">Кавказская</option>
|
| 2207 |
+
<option value="African" data-lang-key="nat_african">Африканская</option>
|
| 2208 |
+
<option value="Latin American" data-lang-key="nat_latin_american">Латиноамериканская</option>
|
| 2209 |
+
<option value="Indigenous American" data-lang-key="nat_indigenous">Коренной Американец</option>
|
| 2210 |
+
<option value="Polynesian" data-lang-key="nat_polynesian">Полинезийская</option>
|
| 2211 |
+
<option value="Mixed Race" data-lang-key="nat_mixed">Смешанная</option>
|
| 2212 |
+
</select>
|
| 2213 |
+
</div>
|
| 2214 |
+
<div class="form-group">
|
| 2215 |
+
<label for="furniture_bodyType" data-lang-key="bodyType">Телосложение</label>
|
| 2216 |
+
<select id="furniture_bodyType"></select>
|
| 2217 |
+
</div>
|
| 2218 |
+
<div class="form-group">
|
| 2219 |
+
<label for="furniture_hairColor" data-lang-key="hairColor">Цвет волос</label>
|
| 2220 |
+
<select id="furniture_hairColor">
|
| 2221 |
+
<option value="black hair" data-lang-key="hair_black">Черные</option>
|
| 2222 |
+
<option value="brown hair" data-lang-key="hair_brown">Каштановые</option>
|
| 2223 |
+
<option value="blonde hair" data-lang-key="hair_blonde">Блонд</option>
|
| 2224 |
+
<option value="red hair" data-lang-key="hair_red">Рыжие</option>
|
| 2225 |
+
<option value="light brown hair" data-lang-key="hair_light_brown">Русые</option>
|
| 2226 |
+
</select>
|
| 2227 |
+
</div>
|
| 2228 |
+
<div class="form-group">
|
| 2229 |
+
<label for="furniture_hairstyle" data-lang-key="hairstyle">Прическа</label>
|
| 2230 |
+
<select id="furniture_hairstyle"></select>
|
| 2231 |
+
</div>
|
| 2232 |
+
<div class="form-group">
|
| 2233 |
+
<label for="furniture_eyeColor" data-lang-key="eyeColor">Цвет глаз</label>
|
| 2234 |
+
<select id="furniture_eyeColor">
|
| 2235 |
+
<option value="brown eyes" data-lang-key="eyes_brown">Карие</option>
|
| 2236 |
+
<option value="blue eyes" data-lang-key="eyes_blue">Голубые</option>
|
| 2237 |
+
<option value="green eyes" data-lang-key="eyes_green">Зеленые</option>
|
| 2238 |
+
<option value="gray eyes" data-lang-key="eyes_gray">Серые</option>
|
| 2239 |
+
</select>
|
| 2240 |
+
</div>
|
| 2241 |
+
<div class="form-group full-width" id="beardSection_furniture" style="display:none;">
|
| 2242 |
+
<label data-lang-key="beard">Борода</label>
|
| 2243 |
+
<div class="checkbox-group">
|
| 2244 |
+
<div class="checkbox-item">
|
| 2245 |
+
<input type="checkbox" id="hasBeard_furniture">
|
| 2246 |
+
<label for="hasBeard_furniture" data-lang-key="enableBeard">Добавить бороду</label>
|
| 2247 |
+
</div>
|
| 2248 |
+
<div id="beardOptions_furniture" style="display:none; margin-top: 15px;">
|
| 2249 |
+
<div class="form-group" style="margin-bottom:0;">
|
| 2250 |
+
<label for="beardStyle_furniture" data-lang-key="beardStyle">Тип бороды</label>
|
| 2251 |
+
<select id="beardStyle_furniture"></select>
|
| 2252 |
+
</div>
|
| 2253 |
+
</div>
|
| 2254 |
+
</div>
|
| 2255 |
+
</div>
|
| 2256 |
+
<div class="form-group full-width">
|
| 2257 |
+
<label data-lang-key="tattoos">Татуировки</label>
|
| 2258 |
+
<div class="checkbox-group">
|
| 2259 |
+
<div class="checkbox-item">
|
| 2260 |
+
<input type="checkbox" id="hasTattoos_furniture">
|
| 2261 |
+
<label for="hasTattoos_furniture" data-lang-key="enableTattoos">Добавить татуировки</label>
|
| 2262 |
+
</div>
|
| 2263 |
+
<div id="tattooOptions_furniture" style="display:none; display:flex; flex-direction: column; gap: 20px; margin-top: 15px;">
|
| 2264 |
+
<div class="form-group" style="margin-bottom:0;">
|
| 2265 |
+
<label for="tattooStyle_furniture" data-lang-key="tattooStyle">Стиль</label>
|
| 2266 |
+
<select id="tattooStyle_furniture"></select>
|
| 2267 |
+
</div>
|
| 2268 |
+
<div class="form-group" style="margin-bottom:0;">
|
| 2269 |
+
<label for="tattooCoverage_furniture" data-lang-key="tattooCoverage">Покрытие</label>
|
| 2270 |
+
<select id="tattooCoverage_furniture"></select>
|
| 2271 |
+
</div>
|
| 2272 |
+
</div>
|
| 2273 |
+
</div>
|
| 2274 |
+
</div>
|
| 2275 |
+
<div class="form-group full-width">
|
| 2276 |
+
<label for="furniture_shotType" data-lang-key="shotType">Ракурс/План</label>
|
| 2277 |
+
<select id="furniture_shotType">
|
| 2278 |
+
<option value="Full body shot, interacting with the furniture" selected data-lang-key="shot_full">В полный рост, взаимодействует с мебелью</option>
|
| 2279 |
+
<option value="Medium shot, sitting on or near the furniture" data-lang-key="shot_medium">Средний план, сидит на мебели</option>
|
| 2280 |
+
</select>
|
| 2281 |
+
</div>
|
| 2282 |
+
</div>
|
| 2283 |
+
</div>
|
| 2284 |
+
</div>
|
| 2285 |
+
<div class="form-section">
|
| 2286 |
+
<h2><span class="section-number">2</span> <span data-lang-key="section2ObjectTitle">Сцена и Стиль</span></h2>
|
| 2287 |
+
<div class="form-grid">
|
| 2288 |
+
<div class="form-group full-width">
|
| 2289 |
+
<div class="checkbox-group">
|
| 2290 |
+
<div class="checkbox-item">
|
| 2291 |
+
<input type="checkbox" id="marketplaceCheck_furniture">
|
| 2292 |
+
<label for="marketplaceCheck_furniture" data-lang-key="marketplaceCheck">Режим маркетплейса</label>
|
| 2293 |
+
</div>
|
| 2294 |
+
</div>
|
| 2295 |
+
</div>
|
| 2296 |
+
<div class="form-group full-width">
|
| 2297 |
+
<label data-lang-key="styleBackground">Стиль / Фон</label>
|
| 2298 |
+
<div id="furnitureStyleSelector" class="style-grid"></div>
|
| 2299 |
+
</div>
|
| 2300 |
+
</div>
|
| 2301 |
+
</div>
|
| 2302 |
+
<div class="form-section">
|
| 2303 |
+
<h2><span class="section-number">3</span> <span data-lang-key="section3Title">Композиция и Детали</span></h2>
|
| 2304 |
+
<div class="form-grid">
|
| 2305 |
+
<div class="form-group full-width">
|
| 2306 |
+
<label data-lang-key="aspectRatio">Соотношение сторон</label>
|
| 2307 |
+
<div id="aspectRatioSelectorFurniture" class="aspect-ratio-grid">
|
| 2308 |
+
<button type="button" class="aspect-ratio-btn active" data-value="--ar 9:16"><div class="preview" style="width: 27px; height: 48px;"></div><span>9:16</span></button>
|
| 2309 |
+
<button type="button" class="aspect-ratio-btn" data-value="--ar 3:4"><div class="preview" style="width: 36px; height: 48px;"></div><span>3:4</span></button>
|
| 2310 |
+
<button type="button" class="aspect-ratio-btn" data-value="--ar 1:1"><div class="preview" style="width: 40px; height: 40px;"></div><span>1:1</span></button>
|
| 2311 |
+
<button type="button" class="aspect-ratio-btn" data-value="--ar 16:9"><div class="preview" style="width: 64px; height: 36px;"></div><span>16:9</span></button>
|
| 2312 |
+
</div>
|
| 2313 |
+
</div>
|
| 2314 |
+
<div class="form-group full-width">
|
| 2315 |
+
<label for="furniture_additional_prompt" data-lang-key="additionalDirectives">Дополнительные директивы</label>
|
| 2316 |
+
<textarea id="furniture_additional_prompt" data-lang-key-placeholder="additionalDirectivesPlaceholderObject"></textarea>
|
| 2317 |
+
</div>
|
| 2318 |
+
<div class="form-group full-width">
|
| 2319 |
+
<label data-lang-key="detailsVariations">Детали и Вариации</label>
|
| 2320 |
+
<div class="checkbox-group">
|
| 2321 |
+
<div class="checkbox-item">
|
| 2322 |
+
<input type="checkbox" id="furniture_detailsCollage">
|
| 2323 |
+
<label for="furniture_detailsCollage" data-lang-key="detailsCollageObject">Коллаж с увеличенными деталями (материал, текстура)</label>
|
| 2324 |
+
</div>
|
| 2325 |
+
<div class="checkbox-item">
|
| 2326 |
+
<input type="checkbox" id="furniture_anglesCollage">
|
| 2327 |
+
<label for="furniture_anglesCollage" data-lang-key="anglesCollageObject">Коллаж с разных ракурсов (спереди, сзади, сбоку)</label>
|
| 2328 |
+
</div>
|
| 2329 |
+
<div class="checkbox-item">
|
| 2330 |
+
<input type="checkbox" id="furniture_variantsCollage">
|
| 2331 |
+
<label for="furniture_variantsCollage" data-lang-key="variantsCollageObject">Разные варианты/цвета предмета</label>
|
| 2332 |
+
</div>
|
| 2333 |
+
<div>
|
| 2334 |
+
<div class="checkbox-item">
|
| 2335 |
+
<input type="checkbox" id="furniture_textOverlayCheck">
|
| 2336 |
+
<label for="furniture_textOverlayCheck" data-lang-key="textOverlayCheck">Наложение текста</label>
|
| 2337 |
+
</div>
|
| 2338 |
+
<textarea id="furniture_textOverlayInput" style="display:none; margin-top: 15px;" data-lang-key-placeholder="textOverlayPlaceholder"></textarea>
|
| 2339 |
+
</div>
|
| 2340 |
+
<div>
|
| 2341 |
+
<div class="checkbox-item">
|
| 2342 |
+
<input type="checkbox" id="logoOverlayCheck_furniture">
|
| 2343 |
+
<label for="logoOverlayCheck_furniture" data-lang-key="logoOverlayCheck">С логотипом</label>
|
| 2344 |
+
</div>
|
| 2345 |
+
<textarea id="logoOverlayInput_furniture" style="display:none; margin-top: 15px;" data-lang-key-placeholder="logoOverlayPlaceholder"></textarea>
|
| 2346 |
+
</div>
|
| 2347 |
+
</div>
|
| 2348 |
+
</div>
|
| 2349 |
+
</div>
|
| 2350 |
+
</div>
|
| 2351 |
+
</div>
|
| 2352 |
+
|
| 2353 |
<div class="btn-container">
|
| 2354 |
<button type="button" class="action-btn" onclick="processAndOpen()">
|
| 2355 |
<span data-lang-key="launchBtn">Launch Synkris</span>
|
|
|
|
| 2371 |
|
| 2372 |
const translations = {
|
| 2373 |
ru: {
|
| 2374 |
+
subtitle: "PROMPT GENERATOR & LAUNCHER", modeModel: "Фото на модели", modeChildren: "Дети", modeObject: "Предмет", modeCosmetics: "Косметика", modeFurniture: "Мебель",
|
| 2375 |
section1Title: "Параметры модели", section2Title: "Сцена и Стиль", section3Title: "Композиция и Детали", section1ObjectTitle: "Параметры объекта",
|
| 2376 |
+
section2ObjectTitle: "Сцена и Стиль", section1CosmeticsTitle: "Продукт и Модель", section1FurnitureTitle: "Параметры мебели",
|
| 2377 |
+
ownModelCheck: "Своя модель (использует 2 фото: одежду + модель)",
|
| 2378 |
objectWithModelCheck: "С моделью", objectOnMannequinCheck: "На манекене", celebrityCheck: "Знаменитости", marketplaceCheck: "Режим маркетплейса",
|
| 2379 |
celebrityName: "Знаменитость", gender: "Пол", gender_female: "Женщина", gender_male: "Мужчина", age: "Возраст", age_teen: "14-18 лет",
|
| 2380 |
age_20_25: "20-25 лет", age_25_30: "25-30 лет", age_30_40: "30-40 лет", age_40_50: "40-50 лет", nationality: "Внешность/Этнос",
|
|
|
|
| 2395 |
additionalDirectives: "Дополнительные директивы", additionalDirectivesPlaceholderModel: "Например: в кадре виден телефон последней модели, эффект мокрых волос...",
|
| 2396 |
child_gender_girl: "Девочка", child_gender_boy: "Мальчик", child_age_infant: "6-12 месяцев", child_age_toddler: "2-4 года", child_age_child: "5-8 лет",
|
| 2397 |
child_age_preteen: "9-12 лет", child_shot_full: "В полный рост", child_shot_medium: "По пояс", child_shot_portrait: "Портрет",
|
| 2398 |
+
childPoseAction: "Поза/Действие", child_pose_running: "Бежит по полю", child_pose_playing: "Играет с игрушками", child_pose_reading: "Сидит с китеп",
|
| 2399 |
child_pose_posing: "Позирует для фото", child_pose_jumping: "Прыгает на кровати", childDetailsLabel: "Одежда и Де��али",
|
| 2400 |
childDetailsPlaceholder: "Пример: джинсовый комбинезон с потертостями и металлическими пуговицами, вельветовая рубашка в рубчик",
|
| 2401 |
additionalDirectivesPlaceholderChild: "Например: добавь инфографику с текстом 'organic cotton'", objectNameLabel: "Название/Описание предмета",
|
| 2402 |
objectNamePlaceholder: "Например: флакон духов 'Noir', кроссовки 'CyberRun', часы 'Classic Timepiece'", cosmeticsNameLabel: "Название/Описание косметики",
|
| 2403 |
+
cosmeticsNamePlaceholder: "Например: красная помада 'Ruby', тональный крем 'Glow', палетка теней", furnitureNameLabel: "Название/Описание мебели",
|
| 2404 |
+
furnitureNamePlaceholder: "Например: кожаный диван Честерфилд, винтажный ковер, кресло Eames", styleBackground: "Стиль / Фон",
|
| 2405 |
additionalDirectivesPlaceholderObject: "Например: добавить инфографику 'new collection', левитация предмета",
|
| 2406 |
additionalDirectivesPlaceholderCosmetics: "Например: акцент на сиянии кожи, макро-кадр губ", detailsVariations: "Детали и Вариации",
|
| 2407 |
detailsCollage: "Коллаж с увеличенными деталями (ткань, фурнитура)", detailsCollageObject: "Коллаж с увеличенными деталями (материал, текстура)",
|
|
|
|
| 2415 |
wan27Check: "Wan 2.7 (Короткий промпт)", wan27Tooltip: 'вы можете отметить этот параметр и пользоваться новым видом качества , в поле выбора качества в поиске напишите "27" и у вас выйдет wan 2.7 image pro',
|
| 2416 |
flagship_styles: {'studio': 'Студия (люкс)', 'product_focus_light': 'Маркетплейс', 'street': 'Стрит-стайл', 'lookbook': 'Лукбук', 'minimalism': 'Минимализм', 'urban_loft_lifestyle': 'Лофт', 'elevator_mirror_selfie': 'Селфи в лифте', 'car_interior_lifestyle': 'В салоне авто', 'golden_hour_field': 'Золотой час в поле', 'messy_bedroom_morning': 'Утро в спальне', 'vintage_35mm_film': 'Винтажная пленка', 'paparazzi_street_flash': 'Папарацци-вспышка', 'cafe_window_contemplation': 'У окна в кафе', 'rooftop_party_sunset': 'Вечеринка на крыше', 'bookstore_aisle_cozy': 'Книжный магазин', 'custom_background_fusion': 'Свой фон (профи)', 'polaroid_snapshot': 'Полароид', 'creative': 'Креатив', 'retro': 'Ретро', 'boho': 'Бохо', 'forest_nymph': 'Лес', 'desert_expedition': 'Пустыня', 'gothic': 'Готика', 'editorial': 'Эдиториал', 'film_noir': 'Нуар', 'cottagecore': 'Коттеджкор', 'royalcore': 'Дворец', 'solarpunk': 'Соларпанк', 'skater': 'Скейтер', 'vibrant_market': 'Рынок', 'cyberpunk': 'Киберпанк', 'fantasy': 'Фэнтези', 'surreal_dreamscape': 'Сюрреализм', 'techwear': 'Techwear', 'home_casual': 'Дом', 'backstage': 'Бэкстейдж', 'road_trip': 'Роуд-трип', 'rainy_day': 'Дождь', 'night_flash': 'Ночь (вспышка)', 'tropical_resort': 'Курорт', 'beach': 'Пляж', 'alaska_winter': 'Аляска (зима)', 'football_field': 'Футбольное поле', 'volcanic_ash_desert': 'Вулкан (Исландия)', 'salt_flats_mirage': 'Солончак (Боливия)', 'highlands_majesty': 'Нагорье (Шотландия)'},
|
| 2417 |
object_styles: {'studio': 'Студия', 'minimalism': 'Минимализм', 'nature': 'Природа', 'luxe': 'Люкс', 'dark': 'Драма', 'geometric': 'Геометрия', 'floating': 'Левитация', 'lifestyle': 'Лайфстайл', 'splash': 'Всплеск', 'handmade': 'Мастерская', 'alaska_winter': 'Аляска (зима)', 'football_field': 'Футбольное поле', 'volcanic_ash_desert': 'Вулкан (Исландия)', 'salt_flats_mirage': 'Солончак (Боливия)', 'highlands_majesty': 'Нагорье (Шотландия)'},
|
| 2418 |
+
furniture_styles: {'scandinavian_minimalism': 'Скандинавский минимализм', 'mid_century_modern': 'Мид-сенчури модерн', 'industrial_loft': 'Индустриальный лофт', 'bohemian_chic': 'Бохо-шик', 'luxury_art_deco': 'Люкс Арт-Деко', 'wabi_sabi': 'Ваби-саби', 'cyberpunk_neon': 'Киберпанк (��еон)', 'surreal_dreamscape': 'Сюрреализм', 'cozy_cabin': 'Уютное шале', 'classic_elegance': 'Классическая элегантность', 'modern_outdoor': 'Терраса/улица'},
|
| 2419 |
female_body_types: {'standard': 'Стандартное', 'very_slim': 'Очень стройное (модель)', 'slim': 'Стройное (натуральное)', 'slim_busty': 'Стройное с пышной грудью', 'athletic': 'Атлетичное', 'petite': 'Миниатюрное', 'hourglass': 'Песочные часы', 'fit_curvy': 'Спортивное (curvy)', 'plus_size': 'Пышные', 'curvy': 'Мягкое (curvy)', 'full_figured': 'Плюс-сайз', 'pregnant': 'Беременная (одежда для беременных)'},
|
| 2420 |
male_body_types: {'athletic': 'Атлетичное', 'lean and toned': 'Поджарое', 'muscular build': 'Мускулистое', 'broad build': 'Крупное', 'slim build': 'Худощавое'},
|
| 2421 |
female_hairstyles: {'long wavy hair': 'Длинные волнистые', 'short bob cut': 'Короткий боб', 'elegant updo': 'Элегантный пучок', 'straight shoulder-length hair': 'Прямые до плеч', 'pixie cut': 'Пикси', 'messy bun': 'Небрежный пучок', 'high ponytail': 'Высокий хвост', 'braids': 'Косы', 'curly afro': 'Афро кудри', 'bangs': 'С челкой', 'layered haircut': 'Каскад', 'wearing a hijab': 'В платке'},
|
|
|
|
| 2429 |
celebrities_male: c_m, celebrities_female: c_f, child_celebrities_male: cc_m, child_celebrities_female: cc_f
|
| 2430 |
},
|
| 2431 |
kz: {
|
| 2432 |
+
subtitle: "PROMPT ГЕНЕРАТОРЫ ЖӘНЕ ІСКЕ ҚОСҚЫШ", modeModel: "Модельдегі фото", modeChildren: "Балалар", modeObject: "Зат", modeCosmetics: "Косметика", modeFurniture: "Жиһаз",
|
| 2433 |
section1Title: "Модель параметрлері", section2Title: "Сахна және стиль", section3Title: "Композиция және бөлшектер", section1ObjectTitle: "Нысан параметрлері",
|
| 2434 |
+
section2ObjectTitle: "Сахна және стиль", section1CosmeticsTitle: "Өнім және модель", section1FurnitureTitle: "Жиһаз параметрлері",
|
| 2435 |
+
ownModelCheck: "Өз моделіңіз (2 фото қолданады: киім + модель)",
|
| 2436 |
objectWithModelCheck: "Модельмен", objectOnMannequinCheck: "Манекенде", celebrityCheck: "Атақты адамдар", marketplaceCheck: "Маркетплейс режимі",
|
| 2437 |
celebrityName: "Атақты адам", gender: "Жынысы", gender_female: "Әйел", gender_male: "Ер", age: "Жасы", age_teen: "14-18 жас",
|
| 2438 |
age_20_25: "20-25 жас", age_25_30: "25-30 жас", age_30_40: "30-40 жас", age_40_50: "40-50 жас", nationality: "Сыртқы келбеті/Этнос",
|
|
|
|
| 2458 |
childDetailsPlaceholder: "Мысалы: сыдырылған және металл түймелері бар джинсы комбинезон, вельвет жейде",
|
| 2459 |
additionalDirectivesPlaceholderChild: "Мысалы: 'organic cotton' мәтіні бар инфографика қосу", objectNameLabel: "Заттың атауы/сипаттамасы",
|
| 2460 |
objectNamePlaceholder: "Мысалы: 'Noir' иіссу құтысы, 'CyberRun' кроссовкасы, 'Classic Timepiece' сағаты", cosmeticsNameLabel: "Косметика атауы/сипаттамасы",
|
| 2461 |
+
cosmeticsNamePlaceholder: "Мысалы: қызыл далап 'Ruby', тоналды крем 'Glow', қабақ бояуы", furnitureNameLabel: "Жиһаздың атауы/сипаттамасы",
|
| 2462 |
+
furnitureNamePlaceholder: "Мысалы: былғары Честерфилд диваны, винтажды кілем", styleBackground: "Стиль / Фон",
|
| 2463 |
additionalDirectivesPlaceholderObject: "Мысалы: 'new collection' инфографикасын қосу, заттың левитациясы",
|
| 2464 |
additionalDirectivesPlaceholderCosmetics: "Мысалы: терінің жарқырауына назар аудару, еріннің макро-кадры", detailsVariations: "Бөлшектер және вариациялар",
|
| 2465 |
detailsCollage: "Үлкейтіл��ен бөлшектері бар коллаж (мата, фурнитура)", detailsCollageObject: "Үлкейтілген бөлшектері бар коллаж (материал, текстура)",
|
|
|
|
| 2473 |
wan27Check: "Wan 2.7 (Қысқа промпт)", wan27Tooltip: 'Бұл параметрді белгілеп, жаңа сапа түрін пайдалана аласыз, іздеу жолағына "27" деп жазыңыз, сонда wan 2.7 image pro шығады',
|
| 2474 |
flagship_styles: {'studio': 'Студия (люкс)', 'product_focus_light': 'Маркетплейс', 'street': 'Стрит-стайл', 'lookbook': 'Лукбук', 'minimalism': 'Минимализм', 'urban_loft_lifestyle': 'Лофт', 'elevator_mirror_selfie': 'Лифттегі селфи', 'car_interior_lifestyle': 'Авто салонында', 'golden_hour_field': 'Алтын сағат', 'messy_bedroom_morning': 'Жатын бөлме', 'vintage_35mm_film': 'Винтаж пленка', 'paparazzi_street_flash': 'Папарацци', 'cafe_window_contemplation': 'Кафеде', 'rooftop_party_sunset': 'Шатырдағы кеш', 'bookstore_aisle_cozy': 'Кітап дүкені', 'custom_background_fusion': 'Өз фоныңыз (профи)', 'polaroid_snapshot': 'Полароид', 'creative': 'Креатив', 'retro': 'Ретро', 'boho': 'Бохо', 'forest_nymph': 'Орман', 'desert_expedition': 'Шөл', 'gothic': 'Готика', 'editorial': 'Эдиториал', 'film_noir': 'Нуар', 'cottagecore': 'Коттеджкор', 'royalcore': 'Сарай', 'solarpunk': 'Соларпанк', 'skater': 'Скейтер', 'vibrant_market': 'Базар', 'cyberpunk': 'Киберпанк', 'fantasy': 'Фэнтези', 'surreal_dreamscape': 'Сюрреализм', 'techwear': 'Techwear', 'home_casual': 'Үй', 'backstage': 'Бэкстейдж', 'road_trip': 'Роуд-трип', 'rainy_day': 'Жаңбыр', 'night_flash': 'Түн (жарқыл)', 'tropical_resort': 'Курорт', 'beach': 'Жағажай', 'alaska_winter': 'Аляска (қыс)', 'football_field': 'Футбол алаңы', 'volcanic_ash_desert': 'Жанартау (Исландия)', 'salt_flats_mirage': 'Тұзды алқап (Боливия)', 'highlands_majesty': 'Таулы аймақ (Шотландия)'},
|
| 2475 |
object_styles: {'studio': 'Студия', 'minimalism': 'Минимализм', 'nature': 'Табиғат', 'luxe': 'Люкс', 'dark': 'Драма', 'geometric': 'Геометрия', 'floating': 'Левитация', 'lifestyle': 'Лайфстайл', 'splash': 'Шашырау', 'handmade': 'Шеберхана', 'alaska_winter': 'Аляска (қыс)', 'football_field': 'Футбол алаңы', 'volcanic_ash_desert': 'Жанартау (Исландия)', 'salt_flats_mirage': 'Тұзды алқап (Боливия)', 'highlands_majesty': 'Таулы аймақ (Шотландия)'},
|
| 2476 |
+
furniture_styles: {'scandinavian_minimalism': 'Скандинавиялық минимализм', 'mid_century_modern': 'Мид-сенчури модерн', 'industrial_loft': 'Индустриалды лофт', 'bohemian_chic': 'Бохо-шик', 'luxury_art_deco': 'Люкс Арт-Деко', 'wabi_sabi': 'Ваби-саби', 'cyberpunk_neon': 'Киберпанк (неон)', 'surreal_dreamscape': 'Сюрреализм', 'cozy_cabin': 'Жайлы шале', 'classic_elegance': 'Классикалық элеганттылық', 'modern_outdoor': 'Терраса/дала'},
|
| 2477 |
female_body_types: {'standard': 'Стандартты', 'very_slim': 'Өте сымбатты (модель)', 'slim': 'Сымбатты (табиғи)', 'slim_busty': 'Сымбатты, үлкен кеуделі', 'athletic': 'Атлетикалық', 'petite': 'Кішкентай', 'hourglass': 'Құм сағат', 'fit_curvy': 'Спорттық (curvy)', 'plus_size': 'Толық', 'curvy': 'Жұмсақ (curvy)', 'full_figured': 'Плюс-сайз', 'pregnant': 'Жүкті (жүкті әйелдерге арналған киім)'},
|
| 2478 |
male_body_types: {'athletic': 'Атлетикалық', 'lean and toned': 'Шымыр', 'muscular build': 'Бұлшықетті', 'broad build': 'Ірі', 'slim build': 'Арық'},
|
| 2479 |
female_hairstyles: {'long wavy hair': 'Ұзын толқынды', 'short bob cut': 'Қысқа боб', 'elegant updo': 'Элегантты жинақ', 'straight shoulder-length hair': 'Иыққа дейін түзу', 'pixie cut': 'Пикси', 'messy bun': 'Салғырт жинақ', 'high ponytail': 'Биік құйрық', 'braids': 'Өрімдер', 'curly afro': 'Афро бұйра', 'bangs': 'Кекілмен', 'layered haircut': 'Каскад', 'wearing a hijab': 'Орамалда'},
|
|
|
|
| 2487 |
celebrities_male: c_m, celebrities_female: c_f, child_celebrities_male: cc_m, child_celebrities_female: cc_f
|
| 2488 |
},
|
| 2489 |
kg: {
|
| 2490 |
+
subtitle: "PROMPT ГЕНЕРАТОРУ ЖАНА ИШКЕ КИРГИЗГИЧ", modeModel: "Моделдеги сүрөт", modeChildren: "Балдар", modeObject: "Буюм", modeCosmetics: "Косметика", modeFurniture: "Эмерек",
|
| 2491 |
section1Title: "Моделдин параметрлери", section2Title: "Сахна жана Стиль", section3Title: "Композиция жана Деталдар", section1ObjectTitle: "Объекттин параметрлери",
|
| 2492 |
+
section2ObjectTitle: "Сахна жана Стиль", section1CosmeticsTitle: "Продукт жана Модель", section1FurnitureTitle: "Эмерек параметрлери",
|
| 2493 |
+
ownModelCheck: "Өз моделиңиз (2 сүрөт колдонот: кийим + модель)",
|
| 2494 |
objectWithModelCheck: "Модель менен", objectOnMannequinCheck: "Манекенде", celebrityCheck: "Атактуулар", marketplaceCheck: "Маркетплейс режимі",
|
| 2495 |
celebrityName: "Атактуу", gender: "Жынысы", gender_female: "Аял", gender_male: "Эркек", age: "Жашы", age_teen: "14-18 жаш",
|
| 2496 |
age_20_25: "20-25 жаш", age_25_30: "25-30 жаш", age_30_40: "30-40 жаш", age_40_50: "40-50 жас", nationality: "Сырткы көрүнүшү/Этнос",
|
|
|
|
| 2516 |
childDetailsPlaceholder: "Мисалы: эскирген жана металл топчулары бар джинсы комбинезон, вельвет көйнөк",
|
| 2517 |
additionalDirectivesPlaceholderChild: "Мисалы: 'organic cotton' тексти менен инфографика кошуу", objectNameLabel: "Буюмдун аталышы/сыпаттамасы",
|
| 2518 |
objectNamePlaceholder: "Мисалы: 'Noir' атыр флакону, 'CyberRun' кроссовкасы, 'Classic Timepiece' сааты", cosmeticsNameLabel: "Косметиканын аталышы/сыпаттамасы",
|
| 2519 |
+
cosmeticsNamePlaceholder: "Мисалы: кызыл помада 'Ruby', тоналдык крем 'Glow', көз боёгу", furnitureNameLabel: "Эмеректин аталышы/сыпаттамасы",
|
| 2520 |
+
furnitureNamePlaceholder: "Мисалы: булгаары Честерфилд диваны, винтаж килем", styleBackground: "Стиль / Фон",
|
| 2521 |
additionalDirectivesPlaceholderObject: "Мисалы: 'new collection' инфографикасын кошуу, буюмдун левитациясы",
|
| 2522 |
additionalDirectivesPlaceholderCosmetics: "Мисалы: теринин жаркырашына басым, эриндин макро-кадры", detailsVariations: "Деталдар жана вариациялар",
|
| 2523 |
detailsCollage: "Чоңойтулган деталдары менен коллаж (кездеме, фурнитура)", detailsCollageObject: "Чоңойтулган деталдары менен коллаж (материал, текстура)",
|
|
|
|
| 2531 |
wan27Check: "Wan 2.7 (Кыска промпт)", wan27Tooltip: 'Бул параметрди белгилеп, жаңы сапат түрүн колдоно аласыз, издөө тилкесине "27" деп жазыңыз, ошондо wan 2.7 image pro чыгат',
|
| 2532 |
flagship_styles: {'studio': 'Студия (люкс)', 'product_focus_light': 'Маркетплейс', 'street': 'Стрит-стайл', 'lookbook': 'Лукбук', 'minimalism': 'Минимализм', 'urban_loft_lifestyle': 'Лофт', 'elevator_mirror_selfie': 'Лифттегі селфи', 'car_interior_lifestyle': 'Авто салонунда', 'golden_hour_field': 'Алтын саат', 'messy_bedroom_morning': 'Уктоочу бөлмө', 'vintage_35mm_film': 'Винтаж пленкасы', 'paparazzi_street_flash': 'Папарацци', 'cafe_window_contemplation': 'Кафеде', 'rooftop_party_sunset': 'Чатырдагы кече', 'bookstore_aisle_cozy': 'Китеп дүкөнү', 'custom_background_fusion': 'Өз фонуңуз (профи)', 'polaroid_snapshot': 'Полароид', 'creative': 'Креатив', 'retro': 'Ретро', 'boho': 'Бохо', 'forest_nymph': 'Токой', 'desert_expedition': 'Чөл', 'gothic': 'Готика', 'editorial': 'Эдиториал', 'film_noir': 'Нуар', 'cottagecore': 'Коттеджкор', 'royalcore': 'Сарай', 'solarpunk': 'Соларпанк', 'skater': 'Скейтер', 'vibrant_market': 'Базар', 'cyberpunk': 'Киберпанк', 'fantasy': 'Ф��нтези', 'surreal_dreamscape': 'Сюрреализм', 'techwear': 'Techwear', 'home_casual': 'Үй', 'backstage': 'Бэкстейдж', 'road_trip': 'Роуд-трип', 'rainy_day': 'Жамгыр', 'night_flash': 'Түн (жарк)', 'tropical_resort': 'Курорт', 'beach': 'Пляж', 'alaska_winter': 'Аляска (кыш)', 'football_field': 'Футбол талаасы', 'volcanic_ash_desert': 'Вулкан (Исландия)', 'salt_flats_mirage': 'Туздуу түздүк (Боливия)', 'highlands_majesty': 'Тоолуу аймак (Шотландия)'},
|
| 2533 |
object_styles: {'studio': 'Студия', 'minimalism': 'Минимализм', 'nature': 'Жаратылыш', 'luxe': 'Люкс', 'dark': 'Драма', 'geometric': 'Геометрия', 'floating': 'Левитация', 'lifestyle': 'Лайфстайл', 'splash': 'Чачыроо', 'handmade': 'Устакана', 'alaska_winter': 'Аляска (кыш)', 'football_field': 'Футбол талаасы', 'volcanic_ash_desert': 'Вулкан (Исландия)', 'salt_flats_mirage': 'Туздуу түздүк (Боливия)', 'highlands_majesty': 'Тоолуу аймак (Шотландия)'},
|
| 2534 |
+
furniture_styles: {'scandinavian_minimalism': 'Скандинавиялык минимализм', 'mid_century_modern': 'Мид-сенчури модерн', 'industrial_loft': 'Индустриалдык лофт', 'bohemian_chic': 'Бохо-шик', 'luxury_art_deco': 'Люкс Арт-Деко', 'wabi_sabi': 'Ваби-саби', 'cyberpunk_neon': 'Киберпанк (неон)', 'surreal_dreamscape': 'Сюрреализм', 'cozy_cabin': 'Жайлуу шале', 'classic_elegance': 'Классикалык элеганттуулук', 'modern_outdoor': 'Терраса/сырт'},
|
| 2535 |
female_body_types: {'standard': 'Стандарттуу', 'very_slim': 'Абдан сымбаттуу (модель)', 'slim': 'Сымбаттуу (табигый)', 'slim_busty': 'Сымбаттуу, чоң төштүү', 'athletic': 'Атлетикалык', 'petite': 'Кичинекей', 'hourglass': 'Кум саат', 'fit_curvy': 'Спорттук (curvy)', 'plus_size': 'Толук', 'curvy': 'Жумшак (curvy)', 'full_figured': 'Плюс-сайз', 'pregnant': 'Кош бойлуу (кош бойлуулар үчүн кийим)'},
|
| 2536 |
male_body_types: {'athletic': 'Атлетикалык', 'lean and toned': 'Чымыр', 'muscular build': 'Булчуңдуу', 'broad build': 'Чоң', 'slim build': 'Арык'},
|
| 2537 |
female_hairstyles: {'long wavy hair': 'Узун толкундуу', 'short bob cut': 'Кыска боб', 'elegant updo': 'Элеганттуу түймөк', 'straight shoulder-length hair': 'Ийинге чейин түз', 'pixie cut': 'Пикси', 'messy bun': 'Шалакы түймөк', 'high ponytail': 'Бийик куйрук', 'braids': 'Өрүмдөр', 'curly afro': 'Афро тармал', 'bangs': 'Кекил менен', 'layered haircut': 'Каскад', 'wearing a hijab': 'Жоолукта'},
|
|
|
|
| 2557 |
'object_shotType', 'wan27Check_object',
|
| 2558 |
'cosmetics_gender', 'cosmetics_age', 'cosmetics_nationality', 'cosmetics_bodyType', 'cosmetics_hairColor', 'cosmetics_hairstyle', 'cosmetics_eyeColor',
|
| 2559 |
'hasBeard_cosmetics', 'beardStyle_cosmetics', 'hasTattoos_cosmetics', 'tattooStyle_cosmetics', 'tattooCoverage_cosmetics',
|
| 2560 |
+
'cosmetics_shotType', 'wan27Check_cosmetics',
|
| 2561 |
+
'furniture_gender', 'furniture_age', 'furniture_nationality', 'furniture_bodyType', 'furniture_hairColor', 'furniture_hairstyle', 'furniture_eyeColor',
|
| 2562 |
+
'hasBeard_furniture', 'beardStyle_furniture', 'hasTattoos_furniture', 'tattooStyle_furniture', 'tattooCoverage_furniture',
|
| 2563 |
+
'furniture_shotType', 'wan27Check_furniture'
|
| 2564 |
];
|
| 2565 |
|
| 2566 |
function saveSettings() {
|
|
|
|
| 2597 |
updateChildModelOptions();
|
| 2598 |
updateObjectModelOptions();
|
| 2599 |
updateCosmeticsModelOptions();
|
| 2600 |
+
updateFurnitureModelOptions();
|
| 2601 |
|
| 2602 |
+
['bodyType', 'hairstyle', 'beardStyle_model', 'child_hairstyle', 'object_bodyType', 'object_hairstyle', 'beardStyle_object', 'cosmetics_bodyType', 'cosmetics_hairstyle', 'beardStyle_cosmetics', 'furniture_bodyType', 'furniture_hairstyle', 'beardStyle_furniture'].forEach(id => {
|
| 2603 |
const el = document.getElementById(id);
|
| 2604 |
if (el && settings[id] !== undefined) {
|
| 2605 |
el.value = settings[id];
|
| 2606 |
}
|
| 2607 |
});
|
| 2608 |
|
| 2609 |
+
['hasBeard_model', 'hasTattoos_model', 'hasBeard_object', 'hasTattoos_object', 'hasBeard_cosmetics', 'hasTattoos_cosmetics', 'hasBeard_furniture', 'hasTattoos_furniture'].forEach(id => {
|
| 2610 |
const el = document.getElementById(id);
|
| 2611 |
if(el) el.dispatchEvent(new Event('change'));
|
| 2612 |
});
|
|
|
|
| 2646 |
populateStyles('childStyleSelector', langData.flagship_styles);
|
| 2647 |
populateStyles('objectStyleSelector', langData.object_styles);
|
| 2648 |
populateStyles('cosmeticsStyleSelector', langData.object_styles);
|
| 2649 |
+
populateStyles('furnitureStyleSelector', langData.furniture_styles);
|
| 2650 |
|
| 2651 |
updateModelOptions();
|
| 2652 |
updateObjectModelOptions();
|
| 2653 |
updateCosmeticsModelOptions();
|
| 2654 |
+
updateFurnitureModelOptions();
|
| 2655 |
updateChildModelOptions();
|
| 2656 |
updateCelebrityOptions();
|
| 2657 |
updateChildCelebrityOptions();
|
| 2658 |
updateObjectCelebrityOptions();
|
| 2659 |
updateCosmeticsCelebrityOptions();
|
| 2660 |
+
updateFurnitureCelebrityOptions();
|
| 2661 |
|
| 2662 |
document.querySelectorAll('.lang-switcher button').forEach(btn => btn.classList.remove('active'));
|
| 2663 |
document.getElementById(`lang-${lang}`).classList.add('active');
|
|
|
|
| 2762 |
populateSelect(document.getElementById('tattooCoverage_cosmetics'), langData.tattoo_coverages);
|
| 2763 |
}
|
| 2764 |
|
| 2765 |
+
function updateFurnitureModelOptions() {
|
| 2766 |
+
const lang = localStorage.getItem('synkrisLang') || 'ru';
|
| 2767 |
+
const langData = translations[lang];
|
| 2768 |
+
|
| 2769 |
+
const gender = document.getElementById('furniture_gender').value;
|
| 2770 |
+
const bodyTypeSelect = document.getElementById('furniture_bodyType');
|
| 2771 |
+
const hairstyleSelect = document.getElementById('furniture_hairstyle');
|
| 2772 |
+
|
| 2773 |
+
populateSelect(bodyTypeSelect, gender === 'female' ? langData.female_body_types : langData.male_body_types);
|
| 2774 |
+
populateSelect(hairstyleSelect, gender === 'female' ? langData.female_hairstyles : langData.male_hairstyles);
|
| 2775 |
+
|
| 2776 |
+
document.getElementById('beardSection_furniture').style.display = gender === 'male' ? 'block' : 'none';
|
| 2777 |
+
if (gender === 'female') {
|
| 2778 |
+
const beardCheckbox = document.getElementById('hasBeard_furniture');
|
| 2779 |
+
if (beardCheckbox.checked) {
|
| 2780 |
+
beardCheckbox.checked = false;
|
| 2781 |
+
beardCheckbox.dispatchEvent(new Event('change'));
|
| 2782 |
+
}
|
| 2783 |
+
}
|
| 2784 |
+
|
| 2785 |
+
populateSelect(document.getElementById('beardStyle_furniture'), langData.beard_styles);
|
| 2786 |
+
populateSelect(document.getElementById('tattooStyle_furniture'), langData.tattoo_styles);
|
| 2787 |
+
populateSelect(document.getElementById('tattooCoverage_furniture'), langData.tattoo_coverages);
|
| 2788 |
+
}
|
| 2789 |
+
|
| 2790 |
function updateChildModelOptions() {
|
| 2791 |
const lang = localStorage.getItem('synkrisLang') || 'ru';
|
| 2792 |
const langData = translations[lang];
|
|
|
|
| 2847 |
populateSelect(select, gender === 'female' ? langData.celebrities_female : langData.celebrities_male);
|
| 2848 |
}
|
| 2849 |
|
| 2850 |
+
function updateFurnitureCelebrityOptions() {
|
| 2851 |
+
const lang = localStorage.getItem('synkrisLang') || 'ru';
|
| 2852 |
+
const langData = translations[lang];
|
| 2853 |
+
const gender = document.getElementById('furnitureCelebrityGender').value;
|
| 2854 |
+
const select = document.getElementById('furnitureCelebrityName');
|
| 2855 |
+
|
| 2856 |
+
populateSelect(select, gender === 'female' ? langData.celebrities_female : langData.celebrities_male);
|
| 2857 |
+
}
|
| 2858 |
|
| 2859 |
function toggleOwnModel(isOwnModel) {
|
| 2860 |
const modelParamsContainer = document.getElementById('modelParamsContainer');
|
|
|
|
| 3133 |
prompt += `\\n\\n**COMPOSITION DIRECTIVE (4-VIEW COLLAGE):** Create a professional 4-view collage in a single image. The collage must clearly show the model wearing the garment from four distinct angles: full front view, full back view, full side view, and three-quarter view. Maintain consistent lighting and background across all views.`;
|
| 3134 |
}
|
| 3135 |
if (wantsVariantsCollage) {
|
| 3136 |
+
prompt += `\\n\\n**COMPOSITION DIRECTIVE (VARIANTS COLLAGE):** In a single, cohesive frame, display multiple models (or one model in different poses) showcasing the garment in ALL the different colors present in the reference image. **CRITICAL COLOR PROTOCOL: Use ONLY the exact colors shown in the reference photo. You must include every color present, do not duplicate any colors, and absolutely DO NOT hallucinate, invent, or add new colors that are not explicitly present in the source image.** The result must be aharmonious and balanced collage.`;
|
| 3137 |
}
|
| 3138 |
if (wantsTextOverlay && textToOverlay) {
|
| 3139 |
prompt += `\\n\\n**GRAPHIC OVERLAY:** Add the following text: "${textToOverlay}". Integrate it stylishly using modern, clean typography. The text should be legible but artistically placed to complement the image, not dominate it. Minimalist icons that enhance the text are permissible.`;
|
|
|
|
| 3374 |
if (wantsLogoOverlay && logoToOverlay) {
|
| 3375 |
prompt += `\\n\\n**LOGO INTEGRATION DIRECTIVE:** A high-resolution logo described as '${logoToOverlay}' is tastefully placed on the image, typically in a corner, ensuring it complements the composition without being distracting.`;
|
| 3376 |
}
|
| 3377 |
+
} else if (currentMode === 'furniture') {
|
| 3378 |
+
const withModel = document.getElementById('furnitureWithModelCheck').checked;
|
| 3379 |
+
const wantsMarketplace = document.getElementById('marketplaceCheck_furniture').checked;
|
| 3380 |
+
const furnitureName = document.getElementById('furniture_name').value || "the furniture piece";
|
| 3381 |
+
const isWan27 = document.getElementById('wan27Check_furniture') && document.getElementById('wan27Check_furniture').checked;
|
| 3382 |
+
const styleKey = document.querySelector('#furnitureStyleSelector .style-btn.active').dataset.value;
|
| 3383 |
+
const stylePrompt = promptsData.furniture_styles[styleKey];
|
| 3384 |
+
additionalPrompt = document.getElementById('furniture_additional_prompt').value;
|
| 3385 |
+
aspectRatio = document.querySelector('#aspectRatioSelectorFurniture .aspect-ratio-btn.active').dataset.value;
|
| 3386 |
+
|
| 3387 |
+
if (isWan27) {
|
| 3388 |
+
const additionalPromptWan = document.getElementById('furniture_additional_prompt').value;
|
| 3389 |
+
let shortPrompt = "High-end architectural digest photography, hyper-realistic interior shot. ";
|
| 3390 |
+
|
| 3391 |
+
if (withModel) {
|
| 3392 |
+
const shotType = document.getElementById('furniture_shotType').value;
|
| 3393 |
+
shortPrompt += `Model interacting naturally with the furniture (${furnitureName}). `;
|
| 3394 |
+
if (document.getElementById('furnitureCelebrityCheck').checked) {
|
| 3395 |
+
shortPrompt += `Model is a flawless ${document.getElementById('furnitureCelebrityName').value} lookalike. `;
|
| 3396 |
+
}
|
| 3397 |
+
shortPrompt += `Shot as ${shotType}, showing a lifestyle scene. `;
|
| 3398 |
+
} else {
|
| 3399 |
+
shortPrompt += `Furniture: ${furnitureName}. Beautifully staged in an interior scene. `;
|
| 3400 |
+
}
|
| 3401 |
+
|
| 3402 |
+
shortPrompt += `Setting: ${styleKey.replace(/_/g, ' ')} interior style. Photorealistic lighting, global illumination, ray-traced reflections, sharp focus, masterpiece, 8k resolution. `;
|
| 3403 |
+
|
| 3404 |
+
if (aspectRatio.includes("9:16")) shortPrompt += "Strictly vertical 9:16 composition. ";
|
| 3405 |
+
else if (aspectRatio.includes("16:9")) shortPrompt += "Cinematic horizontal 16:9 composition. ";
|
| 3406 |
+
else if (aspectRatio.includes("1:1")) shortPrompt += "Square 1:1 format. ";
|
| 3407 |
+
else if (aspectRatio.includes("3:4")) shortPrompt += "Vertical 3:4 portrait orientation. ";
|
| 3408 |
+
|
| 3409 |
+
let addOns = [];
|
| 3410 |
+
if (additionalPromptWan) addOns.push(additionalPromptWan);
|
| 3411 |
+
if (document.getElementById('furniture_detailsCollage').checked) addOns.push("formatted as a split-screen collage with close-up macro shots of material details (wood grain, fabric weave)");
|
| 3412 |
+
if (document.getElementById('furniture_anglesCollage').checked) addOns.push("formatted as a multi-panel collage showing different angles");
|
| 3413 |
+
if (document.getElementById('furniture_variantsCollage').checked) addOns.push("formatted as a collage showing all color/material variants explicitly present in the reference image");
|
| 3414 |
+
|
| 3415 |
+
const wantsTextOverlay = document.getElementById('furniture_textOverlayCheck').checked;
|
| 3416 |
+
const textToOverlay = document.getElementById('furniture_textOverlayInput').value.trim();
|
| 3417 |
+
const wantsLogoOverlay = document.getElementById('logoOverlayCheck_furniture').checked;
|
| 3418 |
+
const logoToOverlay = document.getElementById('logoOverlayInput_furniture').value.trim();
|
| 3419 |
+
|
| 3420 |
+
if (wantsTextOverlay && textToOverlay) addOns.push(`incorporating stylish text overlay that says "${textToOverlay}"`);
|
| 3421 |
+
if (wantsLogoOverlay && logoToOverlay) addOns.push(`incorporating a logo (${logoToOverlay})`);
|
| 3422 |
+
|
| 3423 |
+
if (addOns.length > 0) shortPrompt += " " + addOns.join(", ") + ". ";
|
| 3424 |
+
shortPrompt += aspectRatio;
|
| 3425 |
+
return `${shortPrompt.replace(/\s+/g, ' ').trim()}`;
|
| 3426 |
+
}
|
| 3427 |
+
|
| 3428 |
+
if (withModel) {
|
| 3429 |
+
prompt = promptsData.base_prompts.model_base;
|
| 3430 |
+
const isCelebrity = document.getElementById('furnitureCelebrityCheck').checked;
|
| 3431 |
+
|
| 3432 |
+
prompt += `\\n\\n**SCENE & STYLE:** The scene is a ${styleKey} setting. ${stylePrompt}`;
|
| 3433 |
+
|
| 3434 |
+
if (isCelebrity) {
|
| 3435 |
+
const celebNameKey = document.getElementById('furnitureCelebrityName').value;
|
| 3436 |
+
prompt += celebrityPromptTemplate(celebNameKey);
|
| 3437 |
+
} else {
|
| 3438 |
+
const gender = document.getElementById('furniture_gender').value;
|
| 3439 |
+
const age = document.getElementById('furniture_age').value;
|
| 3440 |
+
const nationality = document.getElementById('furniture_nationality').value;
|
| 3441 |
+
const bodyType = document.getElementById('furniture_bodyType').value;
|
| 3442 |
+
const hairColor = document.getElementById('furniture_hairColor').value;
|
| 3443 |
+
const hairstyle = document.getElementById('furniture_hairstyle').value;
|
| 3444 |
+
const eyeColor = document.getElementById('furniture_eyeColor').value;
|
| 3445 |
+
let modelExtraDetails = [];
|
| 3446 |
+
if(document.getElementById('hasTattoos_furniture').checked){
|
| 3447 |
+
modelExtraDetails.push(document.getElementById('tattooCoverage_furniture').value + " in a " + document.getElementById('tattooStyle_furniture').value + " style");
|
| 3448 |
+
}
|
| 3449 |
+
if(gender === 'male' && document.getElementById('hasBeard_furniture').checked){
|
| 3450 |
+
modelExtraDetails.push("with a " + document.getElementById('beardStyle_furniture').value);
|
| 3451 |
+
}
|
| 3452 |
+
let detailsString = modelExtraDetails.length > 0 ? ", " + modelExtraDetails.join(", ") : "";
|
| 3453 |
+
prompt += `\\n\\n**MODEL(S) SPECIFICATIONS:**\\n- model: ${age} ${gender}, ${nationality} appearance, with ${hairColor}, ${hairstyle}, and ${eyeColor}, and a realistic, ${bodyType} body type${detailsString}.`;
|
| 3454 |
+
}
|
| 3455 |
+
const shotType = document.getElementById('furniture_shotType').value;
|
| 3456 |
+
prompt += `\\n\\n**ACTION & COMPOSITION:** The model is interacting naturally with the ${furnitureName} (e.g., sitting on a chair, lounging on a sofa, placing an object on a table). The model should look comfortable and enhance the aspirational lifestyle quality of the scene. The furniture piece remains the hero of the shot. The model is wearing stylish, complementary, but simple clothing that does not distract from the furniture.`;
|
| 3457 |
+
prompt += `\\n- Perspective: ${shotType}`;
|
| 3458 |
+
} else {
|
| 3459 |
+
prompt = promptsData.base_prompts.furniture_base;
|
| 3460 |
+
prompt += `\\n\\n**SCENE & STYLE:** The furniture piece, ${furnitureName}, is perfectly staged in a ${styleKey} interior. ${stylePrompt}`;
|
| 3461 |
+
}
|
| 3462 |
+
|
| 3463 |
+
if (wantsMarketplace) {
|
| 3464 |
+
prompt += promptsData.base_prompts.marketplace_mode_base.replace(/swirls of fabric|splash of a complementary liquid|glowing light trails/g, "subtle ambient light effects, like soft god rays or elegant floating dust motes");
|
| 3465 |
+
}
|
| 3466 |
+
|
| 3467 |
+
const wantsDetailsCollage = document.getElementById('furniture_detailsCollage').checked;
|
| 3468 |
+
const wantsAnglesCollage = document.getElementById('furniture_anglesCollage').checked;
|
| 3469 |
+
const wantsVariantsCollage = document.getElementById('furniture_variantsCollage').checked;
|
| 3470 |
+
const wantsTextOverlay = document.getElementById('furniture_textOverlayCheck').checked;
|
| 3471 |
+
const textToOverlay = document.getElementById('furniture_textOverlayInput').value.trim();
|
| 3472 |
+
const wantsLogoOverlay = document.getElementById('logoOverlayCheck_furniture').checked;
|
| 3473 |
+
const logoToOverlay = document.getElementById('logoOverlayInput_furniture').value.trim();
|
| 3474 |
+
|
| 3475 |
+
if (wantsDetailsCollage) {
|
| 3476 |
+
prompt += `\\n\\n**COMPOSITION DIRECTIVE (DETAILS COLLAGE):** Create a high-end collage. The main image features the full furniture piece in its setting. Add 2-3 smaller inset images showcasing ultra-close-up shots of material texture (wood grain, fabric weave, leather pores) and craftsmanship details (joinery, stitching).`;
|
| 3477 |
+
}
|
| 3478 |
+
if (wantsAnglesCollage) {
|
| 3479 |
+
prompt += `\\n\\n**COMPOSITION DIRECTIVE (MULTI-ANGLE COLLAGE):** Create a professional multi-angle collage in a single image. The collage must clearly show the furniture from distinct angles (front view, side view, three-quarter view). Maintain consistent lighting and environment across all views.`;
|
| 3480 |
+
}
|
| 3481 |
+
if (wantsVariantsCollage) {
|
| 3482 |
+
prompt += `\\n\\n**COMPOSITION DIRECTIVE (VARIANTS SHOWCASE):** In a single, cohesive frame, display the furniture in ALL the different colors/materials present in the reference image. **CRITICAL PROTOCOL: Use ONLY the exact variants shown in the reference photo. You must include every variant present, do not duplicate any, and absolutely DO NOT hallucinate new ones.** The result must be a harmonious and balanced showcase.`;
|
| 3483 |
+
}
|
| 3484 |
+
if (wantsTextOverlay && textToOverlay) {
|
| 3485 |
+
prompt += `\\n\\n**GRAPHIC OVERLAY:** Add the following text: "${textToOverlay}". Integrate it stylishly using elegant, minimalist typography suitable for a luxury furniture brand.`;
|
| 3486 |
+
}
|
| 3487 |
+
if (wantsLogoOverlay && logoToOverlay) {
|
| 3488 |
+
prompt += `\\n\\n**LOGO INTEGRATION DIRECTIVE:** A high-resolution logo described as '${logoToOverlay}' is tastefully placed on the image, typically in a corner, ensuring it complements the composition without being distracting.`;
|
| 3489 |
+
}
|
| 3490 |
}
|
| 3491 |
|
| 3492 |
if (additionalPrompt) {
|
|
|
|
| 3496 |
return `${prompt} ${aspectRatio}`.trim();
|
| 3497 |
}
|
| 3498 |
|
|
|
|
| 3499 |
async function processAndOpen() {
|
| 3500 |
const lang = localStorage.getItem('synkrisLang') || 'ru';
|
| 3501 |
const langData = translations[lang];
|
|
|
|
| 3543 |
}
|
| 3544 |
});
|
| 3545 |
|
| 3546 |
+
['model', 'children', 'object', 'cosmetics', 'furniture'].forEach(prefix => {
|
| 3547 |
const textCheck = document.getElementById(`${prefix}_textOverlayCheck`);
|
| 3548 |
const textInput = document.getElementById(`${prefix}_textOverlayInput`);
|
| 3549 |
const logoCheck = document.getElementById(`logoOverlayCheck_${prefix}`);
|
|
|
|
| 3597 |
if (this.checked) {
|
| 3598 |
objectOnMannequinCheck.checked = false;
|
| 3599 |
}
|
|
|
|
| 3600 |
const isChecked = this.checked;
|
| 3601 |
const celebrityToggle = document.getElementById('objectCelebrityToggle');
|
| 3602 |
const celebrityParams = document.getElementById('objectCelebrityParamsContainer');
|
| 3603 |
const modelParams = document.getElementById('objectModelParamsContainer');
|
| 3604 |
const isCelebrityChecked = document.getElementById('objectCelebrityCheck').checked;
|
|
|
|
| 3605 |
celebrityToggle.style.display = isChecked ? 'flex' : 'none';
|
|
|
|
| 3606 |
if (isChecked && isCelebrityChecked) {
|
| 3607 |
modelParams.style.display = 'none';
|
| 3608 |
celebrityParams.classList.add('active');
|
|
|
|
| 3613 |
modelParams.style.display = 'none';
|
| 3614 |
celebrityParams.classList.remove('active');
|
| 3615 |
}
|
|
|
|
| 3616 |
if (!isChecked) {
|
| 3617 |
document.getElementById('objectCelebrityCheck').checked = false;
|
| 3618 |
celebrityParams.classList.remove('active');
|
| 3619 |
}
|
| 3620 |
});
|
| 3621 |
|
|
|
|
| 3622 |
objectOnMannequinCheck.addEventListener('change', function() {
|
| 3623 |
if (this.checked && objectWithModelCheck.checked) {
|
| 3624 |
objectWithModelCheck.checked = false;
|
|
|
|
| 3643 |
updateCosmeticsCelebrityOptions();
|
| 3644 |
}
|
| 3645 |
});
|
| 3646 |
+
|
| 3647 |
+
document.getElementById('furnitureWithModelCheck').addEventListener('change', function() {
|
| 3648 |
+
const isChecked = this.checked;
|
| 3649 |
+
const celebrityToggle = document.getElementById('furnitureCelebrityToggle');
|
| 3650 |
+
const celebrityParams = document.getElementById('furnitureCelebrityParamsContainer');
|
| 3651 |
+
const modelParams = document.getElementById('furnitureModelParamsContainer');
|
| 3652 |
+
const isCelebrityChecked = document.getElementById('furnitureCelebrityCheck').checked;
|
| 3653 |
|
| 3654 |
+
celebrityToggle.style.display = isChecked ? 'flex' : 'none';
|
| 3655 |
+
|
| 3656 |
+
if (isChecked && isCelebrityChecked) {
|
| 3657 |
+
modelParams.style.display = 'none';
|
| 3658 |
+
celebrityParams.classList.add('active');
|
| 3659 |
+
} else if (isChecked && !isCelebrityChecked) {
|
| 3660 |
+
modelParams.style.display = 'grid';
|
| 3661 |
+
celebrityParams.classList.remove('active');
|
| 3662 |
+
} else {
|
| 3663 |
+
modelParams.style.display = 'none';
|
| 3664 |
+
celebrityParams.classList.remove('active');
|
| 3665 |
+
}
|
| 3666 |
+
|
| 3667 |
+
if (!isChecked) {
|
| 3668 |
+
document.getElementById('furnitureCelebrityCheck').checked = false;
|
| 3669 |
+
celebrityParams.classList.remove('active');
|
| 3670 |
+
}
|
| 3671 |
+
});
|
| 3672 |
+
|
| 3673 |
+
document.getElementById('furnitureCelebrityCheck').addEventListener('change', function() {
|
| 3674 |
+
const isChecked = this.checked;
|
| 3675 |
+
document.getElementById('furnitureCelebrityParamsContainer').classList.toggle('active', isChecked);
|
| 3676 |
+
document.getElementById('furnitureModelParamsContainer').style.display = isChecked ? 'none' : 'grid';
|
| 3677 |
+
if (isChecked) {
|
| 3678 |
+
updateFurnitureCelebrityOptions();
|
| 3679 |
+
}
|
| 3680 |
+
});
|
| 3681 |
+
|
| 3682 |
+
['model', 'object', 'cosmetics', 'furniture'].forEach(prefix => {
|
| 3683 |
+
const hasTattoosCheckbox = document.getElementById(`hasTattoos_${prefix}`);
|
| 3684 |
+
if(hasTattoosCheckbox) {
|
| 3685 |
+
hasTattoosCheckbox.addEventListener('change', function() {
|
| 3686 |
+
document.getElementById(`tattooOptions_${prefix}`).style.display = this.checked ? 'flex' : 'none';
|
| 3687 |
+
});
|
| 3688 |
+
}
|
| 3689 |
const hasBeardCheckbox = document.getElementById(`hasBeard_${prefix}`);
|
| 3690 |
if(hasBeardCheckbox) {
|
| 3691 |
hasBeardCheckbox.addEventListener('change', function() {
|