Spaces:
Running
Running
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>PixelMotion Studio | Transform Images</title> | |
| <script src="https://cdn.tailwindcss.com"></script> | |
| <script src="https://unpkg.com/feather-icons"></script> | |
| <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script> | |
| <script> | |
| tailwind.config = { | |
| theme: { | |
| extend: { | |
| colors: { | |
| primary: '#6366f1', | |
| secondary: '#8b5cf6', | |
| dark: '#1e293b' | |
| } | |
| } | |
| } | |
| } | |
| </script> | |
| <style> | |
| .dropzone { | |
| border: 2px dashed #cbd5e1; | |
| transition: all 0.3s ease; | |
| } | |
| .dropzone.active { | |
| border-color: #6366f1; | |
| background-color: #e0e7ff; | |
| } | |
| .preview-container { | |
| aspect-ratio: 16/9; | |
| } | |
| @keyframes pulse { | |
| 0%, 100% { opacity: 1; } | |
| 50% { opacity: 0.6; } | |
| } | |
| .animate-pulse-slow { | |
| animation: pulse 3s infinite; | |
| } | |
| </style> | |
| </head> | |
| <body class="bg-gray-50 text-gray-800"> | |
| <!-- Header --> | |
| <header class="bg-white shadow-sm"> | |
| <div class="container mx-auto px-4 py-6 flex justify-between items-center"> | |
| <div class="flex items-center space-x-2"> | |
| <i data-feather="film" class="text-primary w-8 h-8"></i> | |
| <h1 class="text-2xl font-bold text-dark">PixelMotion Studio</h1> | |
| </div> | |
| <nav class="hidden md:flex space-x-6"> | |
| <a href="#" class="font-medium hover:text-primary transition">Home</a> | |
| <a href="#" class="font-medium hover:text-primary transition">Features</a> | |
| <a href="#" class="font-medium hover:text-primary transition">Pricing</a> | |
| <a href="#" class="font-medium hover:text-primary transition">FAQ</a> | |
| </nav> | |
| <button class="md:hidden"> | |
| <i data-feather="menu"></i> | |
| </button> | |
| </div> | |
| </header> | |
| <!-- Hero Section --> | |
| <main class="container mx-auto px-4 py-12"> | |
| <div class="text-center max-w-3xl mx-auto mb-12"> | |
| <h2 class="text-4xl md:text-5xl font-bold text-dark mb-4">Transform Images into Dynamic Videos</h2> | |
| <p class="text-lg text-gray-600 mb-8">Upload any image and our AI will create a stunning animated sequence with customizable effects and transitions.</p> | |
| <div class="flex flex-col sm:flex-row justify-center gap-4"> | |
| <button class="bg-primary hover:bg-primary/90 text-white px-6 py-3 rounded-lg font-medium shadow-md transition flex items-center justify-center gap-2"> | |
| <i data-feather="play" class="w-5 h-5"></i> | |
| Start Creating | |
| </button> | |
| <button class="border border-gray-300 hover:border-primary text-dark px-6 py-3 rounded-lg font-medium shadow-sm transition flex items-center justify-center gap-2"> | |
| <i data-feather="info" class="w-5 h-5"></i> | |
| How It Works | |
| </button> | |
| </div> | |
| </div> | |
| <!-- Upload Section --> | |
| <div class="bg-white rounded-xl shadow-lg overflow-hidden max-w-4xl mx-auto"> | |
| <div class="p-6 border-b border-gray-200"> | |
| <h3 class="text-xl font-semibold text-dark">Create Your Video</h3> | |
| <p class="text-gray-600">Upload an image to begin</p> | |
| </div> | |
| <div class="p-8"> | |
| <div id="dropzone" class="dropzone rounded-lg p-12 text-center cursor-pointer"> | |
| <div class="mx-auto max-w-md"> | |
| <i data-feather="upload-cloud" class="w-12 h-12 mx-auto text-primary mb-4"></i> | |
| <h4 class="text-lg font-medium text-dark mb-2">Drag & Drop Your Image</h4> | |
| <p class="text-gray-500 mb-4">or click to browse files</p> | |
| <p class="text-sm text-gray-400">Supports JPG, PNG up to 10MB</p> | |
| </div> | |
| <input type="file" id="fileInput" class="hidden" accept="image/*"> | |
| </div> | |
| <div id="uploadProgress" class="hidden mt-6"> | |
| <div class="flex justify-between mb-2"> | |
| <span class="font-medium">Processing...</span> | |
| <span id="progressPercent" class="font-medium">0%</span> | |
| </div> | |
| <div class="w-full bg-gray-200 rounded-full h-2.5"> | |
| <div id="progressBar" class="bg-primary h-2.5 rounded-full" style="width: 0%"></div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Preview Section --> | |
| <div id="previewSection" class="hidden mt-12 bg-white rounded-xl shadow-lg overflow-hidden max-w-4xl mx-auto"> | |
| <div class="p-6 border-b border-gray-200 flex justify-between items-center"> | |
| <h3 class="text-xl font-semibold text-dark">Your Video Preview</h3> | |
| <div class="flex gap-3"> | |
| <button class="text-primary hover:text-primary/80 transition"> | |
| <i data-feather="refresh-cw" class="w-5 h-5"></i> | |
| </button> | |
| <button class="text-primary hover:text-primary/80 transition"> | |
| <i data-feather="settings" class="w-5 h-5"></i> | |
| </button> | |
| </div> | |
| </div> | |
| <div class="p-8"> | |
| <div class="preview-container bg-gray-100 rounded-lg overflow-hidden mb-6 flex items-center justify-center"> | |
| <div class="text-center p-8"> | |
| <i data-feather="loader" class="w-12 h-12 mx-auto text-primary mb-4 animate-spin"></i> | |
| <p class="text-gray-600">Generating your video preview...</p> | |
| </div> | |
| </div> | |
| <div class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-6"> | |
| <div class="border rounded-lg p-4"> | |
| <h4 class="font-medium text-dark mb-2 flex items-center gap-2"> | |
| <i data-feather="clock" class="w-4 h-4 text-gray-500"></i> | |
| Duration | |
| </h4> | |
| <select class="w-full border rounded-md px-3 py-2 text-sm focus:ring-primary focus:border-primary"> | |
| <option>5 seconds</option> | |
| <option>30 seconds</option> | |
| <option selected>1 minute</option> | |
| <option>3 minutes</option> | |
| <option>5 minutes</option> | |
| </select> | |
| </div> | |
| <div class="border rounded-lg p-4"> | |
| <h4 class="font-medium text-dark mb-2 flex items-center gap-2"> | |
| <i data-feather="sliders" class="w-4 h-4 text-gray-500"></i> | |
| Style | |
| </h4> | |
| <select class="w-full border rounded-md px-3 py-2 text-sm focus:ring-primary focus:border-primary"> | |
| <option>Cinematic</option> | |
| <option selected>Dynamic</option> | |
| <option>Minimal</option> | |
| <option>Vintage</option> | |
| </select> | |
| </div> | |
| <div class="border rounded-lg p-4"> | |
| <h4 class="font-medium text-dark mb-2 flex items-center gap-2"> | |
| <i data-feather="music" class="w-4 h-4 text-gray-500"></i> | |
| Soundtrack | |
| </h4> | |
| <select class="w-full border rounded-md px-3 py-2 text-sm focus:ring-primary focus:border-primary"> | |
| <option>None</option> | |
| <option selected>Ambient</option> | |
| <option>Upbeat</option> | |
| <option>Cinematic</option> | |
| </select> | |
| </div> | |
| </div> | |
| <div class="flex flex-col sm:flex-row gap-4"> | |
| <button class="flex-1 bg-primary hover:bg-primary/90 text-white px-6 py-3 rounded-lg font-medium shadow-md transition flex items-center justify-center gap-2"> | |
| <i data-feather="download" class="w-5 h-5"></i> | |
| Download HD Video | |
| </button> | |
| <button class="flex-1 border border-primary text-primary hover:bg-primary/10 px-6 py-3 rounded-lg font-medium shadow-sm transition flex items-center justify-center gap-2"> | |
| <i data-feather="share-2" class="w-5 h-5"></i> | |
| Share | |
| </button> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Features Section --> | |
| <div class="mt-16"> | |
| <h3 class="text-2xl md:text-3xl font-bold text-dark text-center mb-12">Powerful Creation Features</h3> | |
| <div class="grid grid-cols-1 md:grid-cols-3 gap-8"> | |
| <div class="bg-white p-6 rounded-xl shadow-sm border border-gray-100 hover:shadow-md transition"> | |
| <div class="w-12 h-12 rounded-lg bg-primary/10 flex items-center justify-center mb-4"> | |
| <i data-feather="zap" class="text-primary"></i> | |
| </div> | |
| <h4 class="text-lg font-semibold text-dark mb-2">AI-Powered Animation</h4> | |
| <p class="text-gray-600">Our advanced algorithms bring your images to life with realistic motion effects.</p> | |
| </div> | |
| <div class="bg-white p-6 rounded-xl shadow-sm border border-gray-100 hover:shadow-md transition"> | |
| <div class="w-12 h-12 rounded-lg bg-secondary/10 flex items-center justify-center mb-4"> | |
| <i data-feather="sliders" class="text-secondary"></i> | |
| </div> | |
| <h4 class="text-lg font-semibold text-dark mb-2">Customizable Styles</h4> | |
| <p class="text-gray-600">Choose from multiple animation styles and effects to match your creative vision.</p> | |
| </div> | |
| <div class="bg-white p-6 rounded-xl shadow-sm border border-gray-100 hover:shadow-md transition"> | |
| <div class="w-12 h-12 rounded-lg bg-primary/10 flex items-center justify-center mb-4"> | |
| <i data-feather="cloud" class="text-primary"></i> | |
| </div> | |
| <h4 class="text-lg font-semibold text-dark mb-2">Cloud Processing</h4> | |
| <p class="text-gray-600">All rendering happens in the cloud, saving your device's resources.</p> | |
| </div> | |
| </div> | |
| </div> | |
| </main> | |
| <!-- Footer --> | |
| <footer class="bg-dark text-white mt-24"> | |
| <div class="container mx-auto px-4 py-12"> | |
| <div class="grid grid-cols-1 md:grid-cols-4 gap-8"> | |
| <div> | |
| <div class="flex items-center space-x-2 mb-4"> | |
| <i data-feather="film" class="text-white w-8 h-8"></i> | |
| <h3 class="text-xl font-bold">PixelMotion Studio</h3> | |
| </div> | |
| <p class="text-gray-400">Transforming static images into dynamic visual stories.</p> | |
| </div> | |
| <div> | |
| <h4 class="text-lg font-semibold mb-4">Product</h4> | |
| <ul class="space-y-2"> | |
| <li><a href="#" class="text-gray-400 hover:text-white transition">Features</a></li> | |
| <li><a href="#" class="text-gray-400 hover:text-white transition">Pricing</a></li> | |
| <li><a href="#" class="text-gray-400 hover:text-white transition">Examples</a></li> | |
| </ul> | |
| </div> | |
| <div> | |
| <h4 class="text-lg font-semibold mb-4">Company</h4> | |
| <ul class="space-y-2"> | |
| <li><a href="#" class="text-gray-400 hover:text-white transition">About</a></li> | |
| <li><a href="#" class="text-gray-400 hover:text-white transition">Blog</a></li> | |
| <li><a href="#" class="text-gray-400 hover:text-white transition">Careers</a></li> | |
| </ul> | |
| </div> | |
| <div> | |
| <h4 class="text-lg font-semibold mb-4">Legal</h4> | |
| <ul class="space-y-2"> | |
| <li><a href="#" class="text-gray-400 hover:text-white transition">Privacy</a></li> | |
| <li><a href="#" class="text-gray-400 hover:text-white transition">Terms</a></li> | |
| <li><a href="#" class="text-gray-400 hover:text-white transition">Content Policy</a></li> | |
| </ul> | |
| </div> | |
| </div> | |
| <div class="border-t border-gray-800 mt-12 pt-8 flex flex-col md:flex-row justify-between items-center"> | |
| <p class="text-gray-400 mb-4 md:mb-0">© 2023 PixelMotion Studio. All rights reserved.</p> | |
| <div class="flex space-x-6"> | |
| <a href="#" class="text-gray-400 hover:text-white transition"> | |
| <i data-feather="twitter"></i> | |
| </a> | |
| <a href="#" class="text-gray-400 hover:text-white transition"> | |
| <i data-feather="instagram"></i> | |
| </a> | |
| <a href="#" class="text-gray-400 hover:text-white transition"> | |
| <i data-feather="facebook"></i> | |
| </a> | |
| </div> | |
| </div> | |
| </div> | |
| </footer> | |
| <script> | |
| document.addEventListener('DOMContentLoaded', function() { | |
| feather.replace(); | |
| const dropzone = document.getElementById('dropzone'); | |
| const fileInput = document.getElementById('fileInput'); | |
| const uploadProgress = document.getElementById('uploadProgress'); | |
| const progressBar = document.getElementById('progressBar'); | |
| const progressPercent = document.getElementById('progressPercent'); | |
| const previewSection = document.getElementById('previewSection'); | |
| // Drag and drop functionality | |
| ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => { | |
| dropzone.addEventListener(eventName, preventDefaults, false); | |
| }); | |
| function preventDefaults(e) { | |
| e.preventDefault(); | |
| e.stopPropagation(); | |
| } | |
| ['dragenter', 'dragover'].forEach(eventName => { | |
| dropzone.addEventListener(eventName, highlight, false); | |
| }); | |
| ['dragleave', 'drop'].forEach(eventName => { | |
| dropzone.addEventListener(eventName, unhighlight, false); | |
| }); | |
| function highlight() { | |
| dropzone.classList.add('active'); | |
| } | |
| function unhighlight() { | |
| dropzone.classList.remove('active'); | |
| } | |
| dropzone.addEventListener('drop', handleDrop, false); | |
| dropzone.addEventListener('click', () => fileInput.click()); | |
| fileInput.addEventListener('change', handleFiles); | |
| function handleDrop(e) { | |
| const dt = e.dataTransfer; | |
| const files = dt.files; | |
| handleFiles({ target: { files } }); | |
| } | |
| function handleFiles(e) { | |
| const files = e.target.files; | |
| if (files.length) { | |
| processFile(files[0]); | |
| } | |
| } | |
| function processFile(file) { | |
| if (!file.type.match('image.*')) { | |
| alert('Please upload an image file (JPG, PNG)'); | |
| return; | |
| } | |
| // Show progress bar | |
| uploadProgress.classList.remove('hidden'); | |
| // Simulate upload progress | |
| let progress = 0; | |
| const interval = setInterval(() => { | |
| progress += Math.random() * 10; | |
| if (progress >= 100) { | |
| progress = 100; | |
| clearInterval(interval); | |
| // Hide progress and show preview section after a delay | |
| setTimeout(() => { | |
| uploadProgress.classList.add('hidden'); | |
| previewSection.classList.remove('hidden'); | |
| // Scroll to preview section | |
| previewSection.scrollIntoView({ behavior: 'smooth' }); | |
| }, 500); | |
| } | |
| progressBar.style.width = progress + '%'; | |
| progressPercent.textContent = Math.floor(progress) + '%'; | |
| }, 200); | |
| } | |
| }); | |
| </script> | |
| </body> | |
| </html> | |