| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>Aurora Luxe Visualizer</title> |
| <meta name="description" content="Upload your products and create professional brand visuals instantly"> |
| <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 src="https://cdn.jsdelivr.net/npm/vanta@latest/dist/vanta.globe.min.js"></script> |
| <script src="https://html2canvas.hertzen.com/dist/html2canvas.min.js"></script> |
| <style> |
| .hero-bg { |
| background: linear-gradient(135deg, #F4EDE4 0%, #C9A669 50%, #101010 100%); |
| } |
| .product-card:hover .product-overlay { |
| opacity: 1; |
| transform: translateY(0); |
| } |
| </style> |
| </head> |
| <body class="bg-white font-sans"> |
| |
| <nav class="bg-white shadow-md"> |
| <div class="container mx-auto px-6 py-4 flex justify-between items-center"> |
| <a href="#" class="text-2xl font-bold text-gray-800">Aurora Luxe</a> |
| <div class="flex space-x-6"> |
| <a href="#" class="text-gray-600 hover:text-amber-600 transition">Home</a> |
| <a href="#" class="text-gray-600 hover:text-amber-600 transition">Jewelry</a> |
| <a href="#" class="text-gray-600 hover:text-amber-600 transition">Apparel</a> |
| <a href="#" class="text-gray-600 hover:text-amber-600 transition">Campaigns</a> |
| </div> |
| <button class="bg-amber-600 text-white px-4 py-2 rounded-full hover:bg-amber-700 transition"> |
| Get Started |
| </button> |
| </div> |
| </nav> |
| |
| <section class="hero-bg text-white py-20" id="vanta-bg"> |
| <div class="container mx-auto px-6 text-center"> |
| <h1 class="text-5xl font-bold mb-6">Luxury Brand Imagery <br>Perfected</h1> |
| <p class="text-xl mb-10 max-w-2xl mx-auto">Photorealistic marketing visuals that showcase your products in their best light, every time.</p> |
| <div class="flex justify-center space-x-4"> |
| <label for="product-upload" class="bg-white text-amber-600 px-8 py-3 rounded-full font-medium hover:bg-gray-100 transition cursor-pointer"> |
| <input id="product-upload" type="file" accept="image/*" multiple class="hidden" /> |
| Upload Products |
| </label> |
| <button class="border-2 border-white text-white px-8 py-3 rounded-full font-medium hover:bg-white hover:text-amber-600 transition" id="generate-btn"> |
| Generate Visuals |
| </button> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section class="py-16 bg-gray-50"> |
| <div class="container mx-auto px-6"> |
| <h2 class="text-3xl font-bold text-center mb-12">Your Visualizations</h2> |
| <div class="grid grid-cols-1 md:grid-cols-2 gap-8" id="visualization-container"> |
| <div class="bg-white p-6 rounded-lg shadow-md"> |
| <div class="relative h-64 w-full bg-gray-200 rounded-md mb-4" id="canvas-container"> |
| <img id="background-canvas" class="absolute inset-0 w-full h-full object-cover rounded-md" style="display: none;"> |
| <img id="product-canvas" class="absolute inset-0 w-full h-full object-contain rounded-md" style="display: none;"> |
| <div class="absolute inset-0 flex items-center justify-center text-gray-500"> |
| Your visualization will appear here |
| </div> |
| </div> |
| <div class="flex flex-wrap gap-2 mb-4" id="background-options"></div> |
| <div class="flex space-x-2"> |
| <button class="bg-amber-500 text-white px-4 py-2 rounded hover:bg-amber-600" id="download-btn"> |
| <i data-feather="download" class="w-4 h-4 mr-1"></i> Download |
| </button> |
| <button class="border border-gray-300 text-gray-700 px-4 py-2 rounded hover:bg-gray-100" id="new-visual-btn"> |
| <i data-feather="refresh-cw" class="w-4 h-4 mr-1"></i> New Visual |
| </button> |
| </div> |
| </div> |
| <div class="bg-white p-6 rounded-lg shadow-md"> |
| <h3 class="text-xl font-bold mb-4">Customize Placement</h3> |
| <div class="space-y-4"> |
| <div> |
| <label class="block text-gray-700 mb-2">Product Size</label> |
| <input type="range" id="product-size" min="0.1" max="1" step="0.1" value="0.5" class="w-full"> |
| </div> |
| <div> |
| <label class="block text-gray-700 mb-2">Rotation</label> |
| <input type="range" id="product-rotation" min="0" max="360" step="1" value="0" class="w-full"> |
| </div> |
| <div> |
| <label class="block text-gray-700 mb-2">Position X</label> |
| <input type="range" id="product-x" min="0" max="100" step="1" value="50" class="w-full"> |
| </div> |
| <div> |
| <label class="block text-gray-700 mb-2">Position Y</label> |
| <input type="range" id="product-y" min="0" max="100" step="1" value="50" class="w-full"> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </section> |
| |
| <section class="py-16 bg-gray-50"> |
| <div class="container mx-auto px-6"> |
| <h2 class="text-3xl font-bold text-center mb-12">Precision Visualization</h2> |
| <div class="grid md:grid-cols-3 gap-8"> |
| <div class="bg-white p-8 rounded-lg shadow-sm hover:shadow-md transition"> |
| <div class="text-amber-500 mb-4"> |
| <i data-feather="box" class="w-10 h-10"></i> |
| </div> |
| <h3 class="text-xl font-bold mb-3">Product Integration</h3> |
| <p class="text-gray-600">Seamlessly place your jewelry, apparel or products into photorealistic scenes with perfect lighting and perspective.</p> |
| </div> |
| <div class="bg-white p-8 rounded-lg shadow-sm hover:shadow-md transition"> |
| <div class="text-amber-500 mb-4"> |
| <i data-feather="cpu" class="w-10 h-10"></i> |
| </div> |
| <h3 class="text-xl font-bold mb-3">Brand Consistency</h3> |
| <p class="text-gray-600">Maintain your unique aesthetic across all visuals with custom color grading and style controls.</p> |
| </div> |
| <div class="bg-white p-8 rounded-lg shadow-sm hover:shadow-md transition"> |
| <div class="text-amber-500 mb-4"> |
| <i data-feather="sliders" class="w-10 h-10"></i> |
| </div> |
| <h3 class="text-xl font-bold mb-3">Smart Editing</h3> |
| <p class="text-gray-600">Non-destructive adjustments for lighting, composition and styling while preserving product fidelity.</p> |
| </div> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section class="py-16"> |
| <div class="container mx-auto px-6"> |
| <h2 class="text-3xl font-bold text-center mb-12">Visualization Modes</h2> |
| <div class="grid md:grid-cols-3 gap-8"> |
| |
| <div class="relative overflow-hidden rounded-lg shadow-lg product-card"> |
| <img src="http://static.photos/luxury/640x360/1" alt="Jewelry Visualization" class="w-full h-64 object-cover"> |
| <div class="product-overlay absolute inset-0 bg-black bg-opacity-70 flex flex-col justify-center items-center opacity-0 transform translate-y-4 transition duration-300 p-6"> |
| <h3 class="text-white text-xl font-bold mb-2">Jewelry on Model</h3> |
| <p class="text-gray-200 text-center mb-4">Accurate placement with realistic skin interactions and lighting.</p> |
| <button class="bg-amber-500 text-white px-4 py-2 rounded hover:bg-amber-600">Try Now</button> |
| </div> |
| </div> |
| |
| |
| <div class="relative overflow-hidden rounded-lg shadow-lg product-card"> |
| <img src="http://static.photos/streetwear/640x360/2" alt="Apparel Visualization" class="w-full h-64 object-cover"> |
| <div class="product-overlay absolute inset-0 bg-black bg-opacity-70 flex flex-col justify-center items-center opacity-0 transform translate-y-4 transition duration-300 p-6"> |
| <h3 class="text-white text-xl font-bold mb-2">Apparel Mockups</h3> |
| <p class="text-gray-200 text-center mb-4">Natural fabric drape with perfect graphic placement and folds.</p> |
| <button class="bg-amber-500 text-white px-4 py-2 rounded hover:bg-amber-600">Try Now</button> |
| </div> |
| </div> |
| |
| |
| <div class="relative overflow-hidden rounded-lg shadow-lg product-card"> |
| <img src="http://static.photos/minimal/640x360/3" alt="Product Visualization" class="w-full h-64 object-cover"> |
| <div class="product-overlay absolute inset-0 bg-black bg-opacity-70 flex flex-col justify-center items-center opacity-0 transform translate-y-4 transition duration-300 p-6"> |
| <h3 class="text-white text-xl font-bold mb-2">Product Campaigns</h3> |
| <p class="text-gray-200 text-center mb-4">Hero shots with perfect lighting, composition and reflections.</p> |
| <button class="bg-amber-500 text-white px-4 py-2 rounded hover:bg-amber-600">Try Now</button> |
| </div> |
| </div> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section class="py-20 bg-gray-900 text-white"> |
| <div class="container mx-auto px-6 text-center"> |
| <h2 class="text-4xl font-bold mb-6">Ready to Elevate Your Brand Imagery?</h2> |
| <p class="text-xl mb-10 max-w-2xl mx-auto">Upload your products and receive photorealistic marketing visuals in 48 hours or less.</p> |
| <div class="flex flex-col md:flex-row justify-center space-y-4 md:space-y-0 md:space-x-4"> |
| <label for="project-upload" class="bg-amber-600 text-white px-8 py-4 rounded-full font-medium hover:bg-amber-700 transition cursor-pointer"> |
| <input id="project-upload" type="file" accept="image/*" multiple class="hidden" /> |
| Start Your Project |
| <i data-feather="arrow-right" class="inline ml-2 w-5 h-5"></i> |
| </label> |
| <button class="border-2 border-white text-white px-8 py-4 rounded-full font-medium hover:bg-white hover:text-gray-900 transition"> |
| Schedule a Demo |
| </button> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <footer class="bg-gray-100 py-12"> |
| <div class="container mx-auto px-6"> |
| <div class="flex flex-col md:flex-row justify-between items-center"> |
| <div class="mb-6 md:mb-0"> |
| <h3 class="text-2xl font-bold text-gray-800">Aurora Luxe</h3> |
| <p class="text-gray-600 mt-2">Luxury product visualization perfected.</p> |
| </div> |
| <div class="flex space-x-6"> |
| <a href="#" class="text-gray-600 hover:text-amber-600 transition"> |
| <i data-feather="instagram" class="w-5 h-5"></i> |
| </a> |
| <a href="#" class="text-gray-600 hover:text-amber-600 transition"> |
| <i data-feather="twitter" class="w-5 h-5"></i> |
| </a> |
| <a href="#" class="text-gray-600 hover:text-amber-600 transition"> |
| <i data-feather="linkedin" class="w-5 h-5"></i> |
| </a> |
| </div> |
| </div> |
| <div class="border-t border-gray-200 mt-8 pt-8 flex flex-col md:flex-row justify-between"> |
| <p class="text-gray-600 mb-4 md:mb-0">© 2023 Aurora Luxe. All rights reserved.</p> |
| <div class="flex space-x-6"> |
| <a href="#" class="text-gray-600 hover:text-amber-600 transition">Privacy</a> |
| <a href="#" class="text-gray-600 hover:text-amber-600 transition">Terms</a> |
| <a href="#" class="text-gray-600 hover:text-amber-600 transition">FAQ</a> |
| <a href="#" class="text-gray-600 hover:text-amber-600 transition">Contact</a> |
| </div> |
| </div> |
| </div> |
| </footer> |
| <script> |
| |
| let productImage = null; |
| let currentBackground = null; |
| const UNSPLASH_ACCESS_KEY = 'YOUR_UNSPLASH_ACCESS_KEY'; |
| |
| |
| async function getBackgroundImages(query = 'luxury') { |
| try { |
| const response = await fetch(`https://api.unsplash.com/search/photos?page=1&query=${query}&client_id=${UNSPLASH_ACCESS_KEY}`); |
| const data = await response.json(); |
| return data.results; |
| } catch (error) { |
| console.error('Error fetching backgrounds:', error); |
| return []; |
| } |
| } |
| |
| |
| async function showBackgroundOptions() { |
| const backgrounds = await getBackgroundImages(); |
| const container = document.getElementById('background-options'); |
| container.innerHTML = ''; |
| |
| backgrounds.forEach((bg, index) => { |
| const img = document.createElement('img'); |
| img.src = bg.urls.small; |
| img.alt = bg.alt_description || 'Background option'; |
| img.dataset.fullUrl = bg.urls.regular; |
| img.className = 'w-20 h-20 object-cover rounded-md cursor-pointer hover:ring-2 hover:ring-amber-500'; |
| img.addEventListener('click', () => setBackground(bg.urls.regular)); |
| container.appendChild(img); |
| }); |
| } |
| |
| |
| function setBackground(url) { |
| currentBackground = url; |
| const bgCanvas = document.getElementById('background-canvas'); |
| bgCanvas.src = url; |
| bgCanvas.style.display = 'block'; |
| } |
| |
| |
| document.getElementById('product-upload').addEventListener('change', function(e) { |
| if (e.target.files.length > 0) { |
| productImage = URL.createObjectURL(e.target.files[0]); |
| const productCanvas = document.getElementById('product-canvas'); |
| productCanvas.src = productImage; |
| productCanvas.style.display = 'block'; |
| } |
| }); |
| |
| |
| document.getElementById('generate-btn').addEventListener('click', async function() { |
| if (!productImage) { |
| alert('Please upload a product image first'); |
| return; |
| } |
| await showBackgroundOptions(); |
| |
| |
| updateProductPosition(); |
| }); |
| |
| |
| function updateProductPosition() { |
| const productCanvas = document.getElementById('product-canvas'); |
| if (!productCanvas) return; |
| |
| const size = document.getElementById('product-size').value; |
| const rotation = document.getElementById('product-rotation').value; |
| const x = document.getElementById('product-x').value; |
| const y = document.getElementById('product-y').value; |
| |
| productCanvas.style.transform = `translate(-50%, -50%) rotate(${rotation}deg) scale(${size})`; |
| productCanvas.style.left = `${x}%`; |
| productCanvas.style.top = `${y}%`; |
| } |
| |
| |
| ['product-size', 'product-rotation', 'product-x', 'product-y'].forEach(id => { |
| document.getElementById(id).addEventListener('input', updateProductPosition); |
| }); |
| |
| |
| document.getElementById('download-btn').addEventListener('click', function() { |
| if (!productImage || !currentBackground) { |
| alert('Please generate a visualization first'); |
| return; |
| } |
| |
| const container = document.getElementById('canvas-container'); |
| html2canvas(container).then(canvas => { |
| const link = document.createElement('a'); |
| link.download = 'aurora-luxe-visualization.png'; |
| link.href = canvas.toDataURL('image/png'); |
| link.click(); |
| }); |
| }); |
| |
| |
| document.getElementById('new-visual-btn').addEventListener('click', function() { |
| document.getElementById('background-options').innerHTML = ''; |
| document.getElementById('background-canvas').style.display = 'none'; |
| document.getElementById('product-canvas').style.display = 'none'; |
| }); |
| |
| |
| VANTA.GLOBE({ |
| el: "#vanta-bg", |
| mouseControls: true, |
| touchControls: true, |
| gyroControls: false, |
| minHeight: 200.00, |
| minWidth: 200.00, |
| scale: 1.00, |
| scaleMobile: 1.00, |
| color: 0xC9A669, |
| backgroundColor: 0xF4EDE4, |
| size: 0.8 |
| }); |
| |
| |
| feather.replace(); |
| </script> |
| </body> |
| </html> |
|
|