ai-photo-restore / index.html
Greats's picture
Add 2 files
e069324 verified
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AI Photo Restore - Восстановление старых фотографий с помощью ИИ</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
@keyframes fadeIn {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}
.animate-fade-in {
animation: fadeIn 0.8s ease-out forwards;
}
.photo-upload-area {
border: 2px dashed #cbd5e0;
transition: all 0.3s;
}
.photo-upload-area:hover {
border-color: #4f46e5;
background-color: #f8fafc;
}
.photo-upload-area.dragover {
border-color: #4f46e5;
background-color: #e0e7ff;
}
.before-after-container {
position: relative;
overflow: hidden;
}
.before-after-slider {
position: absolute;
top: 0;
bottom: 0;
width: 50%;
left: 0;
overflow: hidden;
resize: horizontal;
min-width: 20px;
max-width: calc(100% - 20px);
}
.slider-handle {
position: absolute;
top: 0;
bottom: 0;
width: 4px;
background: #4f46e5;
right: 0;
cursor: ew-resize;
}
.slider-handle::after {
content: "";
position: absolute;
width: 20px;
height: 20px;
border-radius: 50%;
background: white;
border: 2px solid #4f46e5;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
</style>
</head>
<body class="bg-gray-50 font-sans">
<!-- Шапка -->
<header class="bg-gradient-to-r from-indigo-600 to-purple-600 text-white shadow-lg">
<div class="container mx-auto px-4 py-6">
<div class="flex justify-between items-center">
<div class="flex items-center space-x-2">
<i class="fas fa-camera-retro text-2xl"></i>
<h1 class="text-2xl font-bold">AI Photo Restore</h1>
</div>
<nav>
<ul class="flex space-x-6">
<li><a href="#how-it-works" class="hover:underline">Как это работает</a></li>
<li><a href="#examples" class="hover:underline">Примеры</a></li>
<li><a href="#pricing" class="hover:underline">Тарифы</a></li>
<li><a href="#faq" class="hover:underline">FAQ</a></li>
</ul>
</nav>
<button class="bg-white text-indigo-600 px-4 py-2 rounded-lg font-medium hover:bg-gray-100 transition">
<i class="fas fa-sign-in-alt mr-2"></i>Войти
</button>
</div>
</div>
</header>
<!-- Герой секция -->
<section class="py-16 bg-white">
<div class="container mx-auto px-4 flex flex-col md:flex-row items-center">
<div class="md:w-1/2 mb-10 md:mb-0 animate-fade-in">
<h2 class="text-4xl font-bold text-gray-800 mb-4">Восстановите старые фотографии с помощью искусственного интеллекта</h2>
<p class="text-xl text-gray-600 mb-8">Наша нейросеть автоматически устраняет повреждения, восстанавливает цвета и улучшает качество ваших старых фотографий.</p>
<div class="flex space-x-4">
<button class="bg-indigo-600 text-white px-6 py-3 rounded-lg font-medium hover:bg-indigo-700 transition flex items-center">
<i class="fas fa-upload mr-2"></i>Попробовать бесплатно
</button>
<button class="border border-indigo-600 text-indigo-600 px-6 py-3 rounded-lg font-medium hover:bg-indigo-50 transition flex items-center">
<i class="fas fa-play-circle mr-2"></i>Смотреть видео
</button>
</div>
</div>
<div class="md:w-1/2 relative animate-fade-in" style="animation-delay: 0.2s;">
<div class="before-after-container h-96 w-full rounded-xl overflow-hidden shadow-xl">
<img src="https://example.com/before-photo.jpg" alt="До восстановления" class="h-full w-full object-cover">
<div class="before-after-slider">
<img src="https://example.com/after-photo.jpg" alt="После восстановления" class="h-full w-full object-cover">
<div class="slider-handle"></div>
</div>
</div>
<div class="absolute bottom-4 left-4 bg-black bg-opacity-50 text-white px-3 py-1 rounded">До</div>
<div class="absolute bottom-4 right-4 bg-black bg-opacity-50 text-white px-3 py-1 rounded">После</div>
</div>
</div>
</section>
<!-- Форма загрузки -->
<section class="py-16 bg-gray-100" id="upload">
<div class="container mx-auto px-4">
<div class="max-w-3xl mx-auto bg-white rounded-xl shadow-md overflow-hidden animate-fade-in">
<div class="p-8">
<h2 class="text-2xl font-bold text-gray-800 mb-6">Загрузите фотографию для восстановления</h2>
<div id="uploadArea" class="photo-upload-area rounded-lg p-12 text-center cursor-pointer mb-6">
<i class="fas fa-cloud-upload-alt text-4xl text-indigo-500 mb-4"></i>
<p class="text-lg text-gray-600 mb-2">Перетащите сюда вашу фотографию или</p>
<button class="bg-indigo-100 text-indigo-600 px-6 py-2 rounded-lg font-medium hover:bg-indigo-200 transition">
Выберите файл
</button>
<p class="text-sm text-gray-500 mt-4">Поддерживаемые форматы: JPG, PNG, BMP до 20MB</p>
<input type="file" id="photoInput" class="hidden" accept="image/*">
</div>
<div class="grid grid-cols-1 md:grid-cols-3 gap-4 mb-6">
<div class="bg-gray-50 p-4 rounded-lg">
<div class="flex items-center mb-2">
<div class="bg-indigo-100 p-2 rounded-full mr-3">
<i class="fas fa-broom text-indigo-600"></i>
</div>
<h3 class="font-medium">Удаление дефектов</h3>
</div>
<p class="text-sm text-gray-600">Устраняем царапины, пятна, разрывы и другие повреждения</p>
</div>
<div class="bg-gray-50 p-4 rounded-lg">
<div class="flex items-center mb-2">
<div class="bg-indigo-100 p-2 rounded-full mr-3">
<i class="fas fa-palette text-indigo-600"></i>
</div>
<h3 class="font-medium">Восстановление цвета</h3>
</div>
<p class="text-sm text-gray-600">Возвращаем естественные цвета и устраняем желтизну</p>
</div>
<div class="bg-gray-50 p-4 rounded-lg">
<div class="flex items-center mb-2">
<div class="bg-indigo-100 p-2 rounded-full mr-3">
<i class="fas fa-search-plus text-indigo-600"></i>
</div>
<h3 class="font-medium">Улучшение качества</h3>
</div>
<p class="text-sm text-gray-600">Повышаем резкость и детализацию изображения</p>
</div>
</div>
<button id="processBtn" class="w-full bg-indigo-600 text-white py-3 rounded-lg font-medium hover:bg-indigo-700 transition flex items-center justify-center disabled:opacity-50" disabled>
<i class="fas fa-magic mr-2"></i>Восстановить фотографию
</button>
</div>
</div>
</div>
</section>
<!-- Как это работает -->
<section class="py-16 bg-white" id="how-it-works">
<div class="container mx-auto px-4">
<h2 class="text-3xl font-bold text-center text-gray-800 mb-12">Как работает наш сервис</h2>
<div class="grid grid-cols-1 md:grid-cols-3 gap-8">
<div class="bg-gray-50 p-6 rounded-xl shadow-sm animate-fade-in">
<div class="text-indigo-600 text-4xl mb-4">1</div>
<h3 class="text-xl font-semibold mb-3">Загрузка фотографии</h3>
<p class="text-gray-600">Загрузите поврежденную или старую фотографию через наш сайт или мобильное приложение.</p>
</div>
<div class="bg-gray-50 p-6 rounded-xl shadow-sm animate-fade-in" style="animation-delay: 0.2s;">
<div class="text-indigo-600 text-4xl mb-4">2</div>
<h3 class="text-xl font-semibold mb-3">Обработка ИИ</h3>
<p class="text-gray-600">Наша нейросеть анализирует изображение и автоматически устраняет все дефекты.</p>
</div>
<div class="bg-gray-50 p-6 rounded-xl shadow-sm animate-fade-in" style="animation-delay: 0.4s;">
<div class="text-indigo-600 text-4xl mb-4">3</div>
<h3 class="text-xl font-semibold mb-3">Скачивание результата</h3>
<p class="text-gray-600">Получите восстановленную фотографию в высоком качестве и поделитесь ей с близкими.</p>
</div>
</div>
</div>
</section>
<!-- Примеры работ -->
<section class="py-16 bg-gray-100" id="examples">
<div class="container mx-auto px-4">
<h2 class="text-3xl font-bold text-center text-gray-800 mb-12">Примеры восстановленных фотографий</h2>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
<!-- Пример 1 -->
<div class="bg-white rounded-xl overflow-hidden shadow-md animate-fade-in">
<div class="before-after-container h-64">
<img src="https://example.com/example1-before.jpg" alt="Пример до" class="h-full w-full object-cover">
<div class="before-after-slider">
<img src="https://example.com/example1-after.jpg" alt="Пример после" class="h-full w-full object-cover">
<div class="slider-handle"></div>
</div>
</div>
<div class="p-4">
<h3 class="font-semibold mb-2">Семейная фотография, 1965 год</h3>
<p class="text-sm text-gray-600">Устранены царапины, восстановлены цвета, улучшена резкость</p>
</div>
</div>
<!-- Пример 2 -->
<div class="bg-white rounded-xl overflow-hidden shadow-md animate-fade-in" style="animation-delay: 0.2s;">
<div class="before-after-container h-64">
<img src="https://example.com/example2-before.jpg" alt="Пример до" class="h-full w-full object-cover">
<div class="before-after-slider">
<img src="https://example.com/example2-after.jpg" alt="Пример после" class="h-full w-full object-cover">
<div class="slider-handle"></div>
</div>
</div>
<div class="p-4">
<h3 class="font-semibold mb-2">Портрет, 1940-е годы</h3>
<p class="text-sm text-gray-600">Удалены пятна и разрывы, восстановлены недостающие фрагменты</p>
</div>
</div>
<!-- Пример 3 -->
<div class="bg-white rounded-xl overflow-hidden shadow-md animate-fade-in" style="animation-delay: 0.4s;">
<div class="before-after-container h-64">
<img src="https://example.com/example3-before.jpg" alt="Пример до" class="h-full w-full object-cover">
<div class="before-after-slider">
<img src="https://example.com/example3-after.jpg" alt="Пример после" class="h-full w-full object-cover">
<div class="slider-handle"></div>
</div>
</div>
<div class="p-4">
<h3 class="font-semibold mb-2">Свадебное фото, 1978 год</h3>
<p class="text-sm text-gray-600">Устранена желтизна, улучшена детализация, восстановлен фон</p>
</div>
</div>
</div>
</div>
</section>
<!-- Тарифы -->
<section class="py-16 bg-white" id="pricing">
<div class="container mx-auto px-4">
<h2 class="text-3xl font-bold text-center text-gray-800 mb-12">Наши тарифы</h2>
<div class="grid grid-cols-1 md:grid-cols-3 gap-8 max-w-5xl mx-auto">
<!-- Бесплатный тариф -->
<div class="border border-gray-200 rounded-xl p-6 hover:border-indigo-300 hover:shadow-lg transition animate-fade-in">
<div class="text-center mb-6">
<h3 class="text-xl font-semibold mb-2">Бесплатный</h3>
<p class="text-gray-600">Для ознакомления с сервисом</p>
</div>
<div class="text-center mb-6">
<span class="text-4xl font-bold">0₽</span>
<span class="text-gray-500">/ всегда</span>
</div>
<ul class="space-y-3 mb-8">
<li class="flex items-center">
<i class="fas fa-check text-green-500 mr-2"></i>
<span>1 бесплатная фотография в месяц</span>
</li>
<li class="flex items-center">
<i class="fas fa-check text-green-500 mr-2"></i>
<span>Ограниченное качество (до 1MP)</span>
</li>
<li class="flex items-center text-gray-400">
<i class="fas fa-times mr-2"></i>
<span>Приоритетная обработка</span>
</li>
<li class="flex items-center text-gray-400">
<i class="fas fa-times mr-2"></i>
<span>Пакетная обработка</span>
</li>
</ul>
<button class="w-full border border-indigo-600 text-indigo-600 py-2 rounded-lg font-medium hover:bg-indigo-50 transition">
Начать бесплатно
</button>
</div>
<!-- Популярный тариф -->
<div class="border-2 border-indigo-500 rounded-xl p-6 shadow-lg relative animate-fade-in" style="animation-delay: 0.2s;">
<div class="absolute top-0 right-0 bg-indigo-500 text-white text-xs font-bold px-3 py-1 rounded-bl-lg rounded-tr-lg">
ПОПУЛЯРНЫЙ
</div>
<div class="text-center mb-6">
<h3 class="text-xl font-semibold mb-2">Премиум</h3>
<p class="text-gray-600">Для частого использования</p>
</div>
<div class="text-center mb-6">
<span class="text-4xl font-bold">299₽</span>
<span class="text-gray-500">/ месяц</span>
</div>
<ul class="space-y-3 mb-8">
<li class="flex items-center">
<i class="fas fa-check text-green-500 mr-2"></i>
<span>До 20 фотографий в месяц</span>
</li>
<li class="flex items-center">
<i class="fas fa-check text-green-500 mr-2"></i>
<span>Высокое качество (до 8MP)</span>
</li>
<li class="flex items-center">
<i class="fas fa-check text-green-500 mr-2"></i>
<span>Приоритетная обработка</span>
</li>
<li class="flex items-center text-gray-400">
<i class="fas fa-times mr-2"></i>
<span>Пакетная обработка</span>
</li>
</ul>
<button class="w-full bg-indigo-600 text-white py-2 rounded-lg font-medium hover:bg-indigo-700 transition">
Выбрать тариф
</button>
</div>
<!-- Профессиональный тариф -->
<div class="border border-gray-200 rounded-xl p-6 hover:border-indigo-300 hover:shadow-lg transition animate-fade-in" style="animation-delay: 0.4s;">
<div class="text-center mb-6">
<h3 class="text-xl font-semibold mb-2">Профессиональный</h3>
<p class="text-gray-600">Для архивов и профессионального использования</p>
</div>
<div class="text-center mb-6">
<span class="text-4xl font-bold">999₽</span>
<span class="text-gray-500">/ месяц</span>
</div>
<ul class="space-y-3 mb-8">
<li class="flex items-center">
<i class="fas fa-check text-green-500 mr-2"></i>
<span>Неограниченное количество фото</span>
</li>
<li class="flex items-center">
<i class="fas fa-check text-green-500 mr-2"></i>
<span>Максимальное качество (до 16MP)</span>
</li>
<li class="flex items-center">
<i class="fas fa-check text-green-500 mr-2"></i>
<span>Приоритетная обработка</span>
</li>
<li class="flex items-center">
<i class="fas fa-check text-green-500 mr-2"></i>
<span>Пакетная обработка</span>
</li>
</ul>
<button class="w-full border border-indigo-600 text-indigo-600 py-2 rounded-lg font-medium hover:bg-indigo-50 transition">
Выбрать тариф
</button>
</div>
</div>
</div>
</section>
<!-- Отзывы -->
<section class="py-16 bg-gray-100">
<div class="container mx-auto px-4">
<h2 class="text-3xl font-bold text-center text-gray-800 mb-12">Отзывы наших клиентов</h2>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
<!-- Отзыв 1 -->
<div class="bg-white p-6 rounded-xl shadow-sm animate-fade-in">
<div class="flex items-center mb-4">
<div class="w-12 h-12 rounded-full bg-indigo-100 flex items-center justify-center text-indigo-600 font-bold mr-4">АК</div>
<div>
<h4 class="font-semibold">Анна К.</h4>
<div class="flex text-yellow-400">
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
</div>
</div>
</div>
<p class="text-gray-600">"Восстановила фотографию бабушки и дедушки 1950-х годов. Результат превзошел все ожидания! Теперь это главный подарок для всей семьи."</p>
</div>
<!-- Отзыв 2 -->
<div class="bg-white p-6 rounded-xl shadow-sm animate-fade-in" style="animation-delay: 0.2s;">
<div class="flex items-center mb-4">
<div class="w-12 h-12 rounded-full bg-indigo-100 flex items-center justify-center text-indigo-600 font-bold mr-4">ИП</div>
<div>
<h4 class="font-semibold">Игорь П.</h4>
<div class="flex text-yellow-400">
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
</div>
</div>
</div>
<p class="text-gray-600">"Как историк часто работаю со старыми фотоархивами. Этот сервис сэкономил мне десятки часов ручной реставрации. Качество на уровне профессионалов."</p>
</div>
<!-- Отзыв 3 -->
<div class="bg-white p-6 rounded-xl shadow-sm animate-fade-in" style="animation-delay: 0.4s;">
<div class="flex items-center mb-4">
<div class="w-12 h-12 rounded-full bg-indigo-100 flex items-center justify-center text-indigo-600 font-bold mr-4">МС</div>
<div>
<h4 class="font-semibold">Марина С.</h4>
<div class="flex text-yellow-400">
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star-half-alt"></i>
</div>
</div>
</div>
<p class="text-gray-600">"Восстановила все детские фотографии, которые были в ужасном состоянии. Теперь могу показать их своим детям. Очень благодарна создателям!"</p>
</div>
</div>
</div>
</section>
<!-- FAQ -->
<section class="py-16 bg-white" id="faq">
<div class="container mx-auto px-4 max-w-3xl">
<h2 class="text-3xl font-bold text-center text-gray-800 mb-12">Часто задаваемые вопросы</h2>
<div class="space-y-4">
<!-- Вопрос 1 -->
<div class="border border-gray-200 rounded-lg overflow-hidden animate-fade-in">
<button class="faq-question w-full text-left p-4 bg-gray-50 hover:bg-gray-100 transition flex justify-between items-center">
<span class="font-medium">Какой формат фотографий поддерживается?</span>
<i class="fas fa-chevron-down transition-transform"></i>
</button>
<div class="faq-answer p-4 hidden">
<p class="text-gray-600">Мы поддерживаем все популярные форматы изображений: JPEG, PNG, BMP. Максимальный размер файла - 20MB. Для лучшего качества восстановления рекомендуем загружать изображения в максимально возможном качестве.</p>
</div>
</div>
<!-- Вопрос 2 -->
<div class="border border-gray-200 rounded-lg overflow-hidden animate-fade-in" style="animation-delay: 0.1s;">
<button class="faq-question w-full text-left p-4 bg-gray-50 hover:bg-gray-100 transition flex justify-between items-center">
<span class="font-medium">Сколько времени занимает обработка?</span>
<i class="fas fa-chevron-down transition-transform"></i>
</button>
<div class="faq-answer p-4 hidden">
<p class="text-gray-600">Время обработки зависит от загрузки сервера и выбранного тарифа. Обычно обработка занимает от 30 секунд до 5 минут. Пользователи с премиум и профессиональными тарифами получают приоритет в очереди на обработку.</p>
</div>
</div>
<!-- Вопрос 3 -->
<div class="border border-gray-200 rounded-lg overflow-hidden animate-fade-in" style="animation-delay: 0.2s;">
<button class="faq-question w-full text-left p-4 bg-gray-50 hover:bg-gray-100 transition flex justify-between items-center">
<span class="font-medium">Можно ли восстановить сильно поврежденные фотографии?</span>
<i class="fas fa-chevron-down transition-transform"></i>
</button>
<div class="faq-answer p-4 hidden">
<p class="text-gray-600">Наш ИИ справляется даже с сильно поврежденными фотографиями, однако есть ограничения. Если отсутствует более 30% изображения или повреждения критичны, результат может быть неидеальным. В таких случаях мы рекомендуем заказать профессиональную реставрацию у наших специалистов.</p>
</div>
</div>
<!-- Вопрос 4 -->
<div class="border border-gray-200 rounded-lg overflow-hidden animate-fade-in" style="animation-delay: 0.3s;">
<button class="faq-question w-full text-left p-4 bg-gray-50 hover:bg-gray-100 transition flex justify-between items-center">
<span class="font-medium">Как долго хранятся мои фотографии на вашем сервере?</span>
<i class="fas fa-chevron-down transition-transform"></i>
</button>
<div class="faq-answer p-4 hidden">
<p class="text-gray-600">Мы храним оригиналы и восстановленные фотографии в течение 30 дней с момента последней обработки. Вы можете в любой момент удалить свои фотографии из личного кабинета. Все изображения хранятся в защищенном виде и не передаются третьим лицам.</p>
</div>
</div>
<!-- Вопрос 5 -->
<div class="border border-gray-200 rounded-lg overflow-hidden animate-fade-in" style="animation-delay: 0.4s;">
<button class="faq-question w-full text-left p-4 bg-gray-50 hover:bg-gray-100 transition flex justify-between items-center">
<span class="font-medium">Есть ли мобильное приложение?</span>
<i class="fas fa-chevron-down transition-transform"></i>
</button>
<div class="faq-answer p-4 hidden">
<p class="text-gray-600">Да, наше мобильное приложение доступно для iOS и Android. Оно включает все функции веб-версии плюс возможность сканировать фотографии прямо с телефона с автоматической коррекцией перспективы и освещения.</p>
</div>
</div>
</div>
</div>
</section>
<!-- CTA -->
<section class="py-16 bg-indigo-600 text-white">
<div class="container mx-auto px-4 text-center">
<h2 class="text-3xl font-bold mb-6">Готовы восстановить свои воспоминания?</h2>
<p class="text-xl mb-8 max-w-2xl mx-auto">Загрузите свою первую фотографию прямо сейчас и убедитесь в качестве нашей технологии.</p>
<button class="bg-white text-indigo-600 px-8 py-3 rounded-lg font-semibold hover:bg-gray-100 transition inline-flex items-center">
<i class="fas fa-upload mr-2"></i>Начать восстановление
</button>
</div>
</section>
<!-- Подвал -->
<footer class="bg-gray-800 text-white py-12">
<div class="container mx-auto px-4">
<div class="grid grid-cols-1 md:grid-cols-4 gap-8">
<div>
<h3 class="text-xl font-bold mb-4 flex items-center">
<i class="fas fa-camera-retro mr-2"></i> AI Photo Restore
</h3>
<p class="text-gray-400">Лучший сервис по восстановлению старых фотографий с помощью искусственного интеллекта.</p>
</div>
<div>
<h4 class="font-semibold mb-4">Сервис</h4>
<ul class="space-y-2">
<li><a href="#" class="text-gray-400 hover:text-white transition">Как это работает</a></li>
<li><a href="#" class="text-gray-400 hover:text-white transition">Примеры работ</a></li>
<li><a href="#" class="text-gray-400 hover:text-white transition">Тарифы</a></li>
<li><a href="#" class="text-gray-400 hover:text-white transition">Блог</a></li>
</ul>
</div>
<div>
<h4 class="font-semibold mb-4">Поддержка</h4>
<ul class="space-y-2">
<li><a href="#" class="text-gray-400 hover:text-white transition">Центр помощи</a></li>
<li><a href="#" class="text-gray-400 hover:text-white transition">Контакты</a></li>
<li><a href="#" class="text-gray-400 hover:text-white transition">Политика конфиденциальности</a></li>
<li><a href="#" class="text-gray-400 hover:text-white transition">Условия использования</a></li>
</ul>
</div>
<div>
<h4 class="font-semibold mb-4">Контакты</h4>
<ul class="space-y-2">
<li class="flex items-center">
<i class="fas fa-envelope mr-2 text-gray-400"></i>
<a href="mailto:[email protected]" class="text-gray-400 hover:text-white transition">[email protected]</a>
</li>
<li class="flex items-center">
<i class="fas fa-phone mr-2 text-gray-400"></i>
<a href="tel:+78001234567" class="text-gray-400 hover:text-white transition">8 (800) 123-45-67</a>
</li>
<li class="flex items-center">
<i class="fas fa-map-marker-alt mr-2 text-gray-400"></i>
<span class="text-gray-400">Москва, ул. Примерная, 123</span>
</li>
</ul>
<div class="flex space-x-4 mt-4">
<a href="#" class="text-gray-400 hover:text-white transition"><i class="fab fa-vk"></i></a>
<a href="#" class="text-gray-400 hover:text-white transition"><i class="fab fa-telegram"></i></a>
<a href="#" class="text-gray-400 hover:text-white transition"><i class="fab fa-youtube"></i></a>
<a href="#" class="text-gray-400 hover:text-white transition"><i class="fab fa-instagram"></i></a>
</div>
</div>
</div>
<div class="border-t border-gray-700 mt-8 pt-8 text-center text-gray-400">
<p>© 2023 AI Photo Restore. Все права защищены.</p>
</div>
</div>
</footer>
<script>
document.addEventListener('DOMContentLoaded', function() {
// Drag and drop для загрузки фото
const uploadArea = document.getElementById('uploadArea');
const photoInput = document.getElementById('photoInput');
const processBtn = document.getElementById('processBtn');
uploadArea.addEventListener('click', function() {
photoInput.click();
});
photoInput.addEventListener('change', function(e) {
if (e.target.files.length) {
handleFileUpload(e.target.files[0]);
}
});
['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {
uploadArea.addEventListener(eventName, preventDefaults, false);
});
function preventDefaults(e) {
e.preventDefault();
e.stopPropagation();
}
['dragenter', 'dragover'].forEach(eventName => {
uploadArea.addEventListener(eventName, highlight, false);
});
['dragleave', 'drop'].forEach(eventName => {
uploadArea.addEventListener(eventName, unhighlight, false);
});
function highlight() {
uploadArea.classList.add('dragover');
}
function unhighlight() {
uploadArea.classList.remove('dragover');
}
uploadArea.addEventListener('drop', function(e) {
const dt = e.dataTransfer;
const file = dt.files[0];
handleFileUpload(file);
});
function handleFileUpload(file) {
if (!file.type.match('image.*')) {
alert('Пожалуйста, загрузите файл изображения');
return;
}
if (file.size > 20 * 1024 * 1024) {
alert('Файл слишком большой. Максимальный размер - 20MB');
return;
}
const reader = new FileReader();
reader.onload = function(e) {
uploadArea.innerHTML = `
<div class="flex flex-col items-center">
<i class="fas fa-check-circle text-4xl text-green-500 mb-2"></i>
<p class="text-lg">${file.name}</p>
<p class="text-sm text-gray-500 mt-2">${(file.size / 1024 / 1024).toFixed(1)} MB</p>
</div>
`;
processBtn.disabled = false;
};
reader.readAsDataURL(file);
}
// Обработка кнопки восстановления
processBtn.addEventListener('click', function() {
// Здесь должна быть логика отправки на сервер
alert('Фотография отправлена на обработку. Результат будет доступен через несколько минут.');
// В реальном приложении здесь был бы AJAX-запрос к API
});
// FAQ аккордеон
const faqQuestions = document.querySelectorAll('.faq-question');
faqQuestions.forEach(question => {
question.addEventListener('click', function() {
const answer = this.nextElementSibling;
const icon = this.querySelector('i');
if (answer.classList.contains('hidden')) {
answer.classList.remove('hidden');
icon.classList.add('rotate-180');
} else {
answer.classList.add('hidden');
icon.classList.remove('rotate-180');
}
});
});
// Передвижение слайдера "до/после"
const sliders = document.querySelectorAll('.before-after-slider');
sliders.forEach(slider => {
const handle = slider.querySelector('.slider-handle');
let isDragging = false;
handle.addEventListener('mousedown', function(e) {
isDragging = true;
document.addEventListener('mousemove', moveSlider);
document.addEventListener('mouseup', stopDrag);
e.preventDefault();
});
function moveSlider(e) {
if (!isDragging) return;
const sliderRect = slider.parentElement.getBoundingClientRect();
let newWidth = e.clientX - sliderRect.left;
// Ограничения
newWidth = Math.max(20, Math.min(sliderRect.width - 20, newWidth));
slider.style.width = `${newWidth}px`;
}
function stopDrag() {
isDragging = false;
document.removeEventListener('mousemove', moveSlider);
document.removeEventListener('mouseup', stopDrag);
}
});
});
</script>
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=Greats/ai-photo-restore" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>