shimaoz

Ai редактор промпт

Sep 19th, 2025
131
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.17 KB | None | 1 0
  1. # AI Редактор- Техническое задание
  2.  
  3. Создай **одностраничное веб-приложение для стилизации фото** через Gemini 2.5 Flash Image API.
  4.  
  5.  
  6. ## Структура интерфейса (все на одном экране)
  7.  
  8. ### Макет (mobile-first, но адаптивный)
  9. ```
  10. +------------------------+
  11. | AI Редактор | <- заголовок
  12. +------------------------+
  13. | |
  14. | [Drop Zone или | <- основная область
  15. | Фото с слайдером] |
  16. | |
  17. +------------------------+
  18. | [Стили] [Стили] [Стили]| <- кнопки стилей
  19. | [Стили] [Стили] [Стили]|
  20. +------------------------+
  21. ```
  22.  
  23. ### 1. Зона загрузки (центр экрана)
  24. **До загрузки фото:**
  25. - Большая область с пунктирной границей
  26. - Иконка загрузки по центру
  27. - Текст: "Перетащите фото или нажмите для выбора"
  28. - Поддержка: drag-and-drop, клик для выбора файла
  29. - Принимать только jpg/png/webp
  30.  
  31. **После загрузки фото:**
  32. - Зона загрузки заменяется на просмотр изображения
  33. - Размер области фиксированный (квадрат, max-width: 512px)
  34. - Изображение масштабируется с сохранением пропорций
  35.  
  36. ### 2. Слайдер для сравнения (появляется после обработки)
  37. - Вертикальная линия-разделитель по центру изображения
  38. - Слева показывается оригинал, справа - результат
  39. - Линию можно перетаскивать мышью/пальцем влево-вправо
  40. - На линии - круглая ручка с иконками "<|>"
  41.  
  42. ### 3. Панель стилей (под изображением)
  43. Сетка кнопок 3x4 для 12 стилей:
  44. - Каждая кнопка: эмодзи + название
  45. - При наведении - подсветка
  46. - При выборе - обводка и анимация
  47.  
  48. **Стили (используй эти промпты точно):**
  49. 1. 🧸 Плюшевая игрушка: "A soft, high-quality plush toy of a person on the picture, with an oversized head, small body, and stubby limbs. Made of fuzzy fabric with visible stitching and embroidered facial features."
  50. 2. 😃 Мультфильм: "Transform this image into a cute simple cartoon. Use minimal lines and solid colors."
  51. 3. 🏛️ Статуя: "Make the person look like a classical marble statue, including the clothes and eyes."
  52. 4. 🧊 3D: "Turn the person on the provided photo into a 3D transparent line art hologram"
  53. 5. ✨ 80-е: "Make the person in the photo look like a 1980s yearbook photo. Feel free to change the hairstyle and clothing."
  54. 6. 🎩 19 век: "Make the photo look like a 19th century daguerreotype. Feel free to change the background to make it period appropriate and add props like Victorian clothing."
  55. 7. 🍣 Photo Booth: Turn the photo into a 3x3 grid of photo strips with different studio-style poses and expressions.
  56. 8. 🌈 Психоделика: "Create a 1960s psychedelic hand-drawn poster-style illustration based on this image with bright bold solid colors and swirling shapes."
  57. 9. 🎮 8-бит: "Transform this image into a minimalist 8-bit brightly colored cute pixel art scene on a 80x80 pixel grid."
  58. 10. 🧔 Борода: "Make the person in the photo look like they have a huge beard."
  59. 11. 🎪 Funko Pop: "Create a detailed 3D render of a chibi Funko Pop figure, strictly based on the provided reference photo. The figure should accurately reflect the person's appearance, hairstyle, attire, and characteristic style from the photo."
  60. 12. 👵 Старость: "Make the person in the photo look extremely old."
  61.  
  62. ### 4. Состояние загрузки
  63. **Во время обработки:**
  64. - Поверх изображения появляется полупрозрачный оверлей
  65. - По центру - спиннер с текстом "Применяем магию..."
  66. - Кнопки стилей блокируются
  67.  
  68. ## Логика работы
  69.  
  70. ### Процесс обработки:
  71. 1. Пользователь загружает фото
  72. 2. Фото конвертируется в base64
  73. 3. Пользователь выбирает стиль
  74. 4. Отправка запроса к Gemini API:
  75. ```javascript
  76. const prompt = [
  77. { text: selectedStylePrompt },
  78. {
  79. inlineData: {
  80. mimeType: "image/jpeg",
  81. data: base64Image
  82. }
  83. }
  84. ];
  85.  
  86. const response = await genAI.generateContent({
  87. model: "gemini-2.5-flash-image-preview",
  88. contents: prompt,
  89. config: {
  90. responseModalities: [Modality.TEXT, Modality.IMAGE]
  91. }
  92. });
  93. ```
  94. 5. Получение результата и отображение со слайдером
  95.  
  96. ### Компонент слайдера сравнения:
  97. ```javascript
  98. // Основная логика:
  99. // - Два изображения накладываются друг на друга
  100. // - Правое (результат) имеет clip-path, управляемый позицией слайдера
  101. // - При перетаскивании обновляется clip-path
  102. ```
  103.  
  104. ## Стилизация (Tailwind)
  105.  
  106. ### Цветовая схема:
  107. - Фон: slate-900
  108. - Карточки: slate-800
  109. - Акцент: violet-500
  110. - Текст: slate-100
  111.  
  112. ### Анимации:
  113. - Плавное появление результата (fade-in)
  114. - Пульсация кнопки при обработке
  115. - Shimmer-эффект на загрузке
  116.  
  117. ## Дополнительные требования
  118.  
  119. 1. **Кнопка "Новое фото"** - появляется после обработки для загрузки другого изображения
  120. 2. **Кнопка "Скачать"** - сохранение результата
  121. 3. **Адаптивность** - на мобильных кнопки стилей в 2 колонки
  122. 4. **Обработка ошибок** - показывать понятные сообщения при сбоях API
  123. 5. **Ограничения** - максимальный размер файла 5MB
  124.  
  125. ## Структура файлов
  126. ```
  127. src/
  128. App.tsx - главный компонент
  129. components/
  130. DropZone.tsx - зона загрузки
  131. ImageViewer.tsx - просмотр со слайдером
  132. StyleGrid.tsx - сетка стилей
  133. lib/
  134. gemini.ts - работа с API
  135. styles.ts - массив стилей и промптов
  136. ```
  137.  
  138. ## Важно
  139. - НЕ добавлять лишних функций (YAGNI)
  140. - Весь интерфейс на одном экране без скролла
  141. - Минималистичный дизайн без лишних элементов
  142. - Фокус на основной функции - стилизации фото
Add Comment
Please, Sign In to add comment