fooocus-test / index.html
SirJas0n's picture
undefined - Initial Deployment
1cd1262 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Fooocus Undress AI</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>
.gradient-bg {
background: linear-gradient(135deg, #1e3a8a 0%, #7e22ce 100%);
}
.file-drop-area {
border: 2px dashed #cbd5e1;
transition: all 0.3s ease;
}
.file-drop-area.active {
border-color: #818cf8;
background-color: rgba(129, 140, 248, 0.05);
}
.prompt-card {
transition: all 0.2s ease;
}
.prompt-card:hover {
transform: translateY(-2px);
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
}
.progress-bar {
transition: width 0.3s ease;
}
.tab-content {
display: none;
}
.tab-content.active {
display: block;
animation: fadeIn 0.3s ease;
}
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
</style>
</head>
<body class="bg-gray-100 font-sans">
<div class="min-h-screen flex flex-col">
<!-- Header -->
<header class="gradient-bg 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-4">
<i class="fas fa-robot text-3xl"></i>
<h1 class="text-2xl md:text-3xl font-bold">Fooocus Undress AI</h1>
</div>
<div class="hidden md:flex items-center space-x-4">
<span class="px-3 py-1 bg-indigo-800 rounded-full text-sm">v0.1</span>
<button class="px-4 py-2 bg-indigo-600 hover:bg-indigo-700 rounded-lg transition">
<i class="fas fa-cog mr-2"></i>Settings
</button>
</div>
</div>
</div>
</header>
<!-- Main Content -->
<main class="flex-grow container mx-auto px-4 py-8">
<div class="bg-white rounded-xl shadow-lg overflow-hidden">
<!-- Tabs -->
<div class="flex border-b">
<button class="tab-btn px-6 py-4 font-medium text-indigo-600 border-b-2 border-indigo-600" data-tab="auto">
<i class="fas fa-magic mr-2"></i>Auto Mode
</button>
<button class="tab-btn px-6 py-4 font-medium text-gray-500 hover:text-indigo-600" data-tab="manual">
<i class="fas fa-sliders-h mr-2"></i>Manual Mode
</button>
<button class="tab-btn px-6 py-4 font-medium text-gray-500 hover:text-indigo-600" data-tab="batch">
<i class="fas fa-layer-group mr-2"></i>Batch Processing
</button>
</div>
<!-- Auto Mode Tab -->
<div id="auto" class="tab-content active p-6">
<div class="grid md:grid-cols-2 gap-8">
<!-- Left Column -->
<div>
<h2 class="text-xl font-bold mb-4 text-gray-800">Automatic Processing</h2>
<p class="text-gray-600 mb-6">Simply upload your images and let the AI automatically detect clothing and generate the perfect undress result.</p>
<div class="file-drop-area relative p-8 rounded-lg border-2 border-dashed mb-6" id="dropArea">
<input type="file" id="fileInput" class="absolute inset-0 w-full h-full opacity-0 cursor-pointer" multiple>
<div class="text-center">
<i class="fas fa-cloud-upload-alt text-4xl text-indigo-500 mb-3"></i>
<h3 class="text-lg font-medium text-gray-700">Drag & Drop Images Here</h3>
<p class="text-gray-500 mt-1">or click to browse files</p>
<p class="text-xs text-gray-400 mt-2">Supports JPG, PNG up to 10MB</p>
</div>
</div>
<div class="mb-6">
<h3 class="font-medium text-gray-700 mb-2">Processing Options</h3>
<div class="space-y-3">
<label class="flex items-center space-x-3">
<input type="checkbox" class="form-checkbox h-5 w-5 text-indigo-600 rounded" checked>
<span>Auto-detect clothing items</span>
</label>
<label class="flex items-center space-x-3">
<input type="checkbox" class="form-checkbox h-5 w-5 text-indigo-600 rounded" checked>
<span>Save original mask</span>
</label>
<label class="flex items-center space-x-3">
<input type="checkbox" class="form-checkbox h-5 w-5 text-indigo-600 rounded">
<span>Delete original files after processing</span>
</label>
</div>
</div>
<button id="processBtn" class="w-full bg-indigo-600 hover:bg-indigo-700 text-white py-3 px-4 rounded-lg font-medium transition flex items-center justify-center">
<i class="fas fa-play mr-2"></i> Start Processing
</button>
</div>
<!-- Right Column -->
<div>
<h2 class="text-xl font-bold mb-4 text-gray-800">Preview & Results</h2>
<div class="bg-gray-50 rounded-lg p-4 mb-6">
<div class="flex justify-between items-center mb-3">
<h3 class="font-medium text-gray-700">Processing Queue</h3>
<span class="text-sm text-gray-500">3 files ready</span>
</div>
<div class="space-y-2">
<div class="flex items-center justify-between p-2 bg-white rounded">
<div class="flex items-center space-x-3">
<i class="fas fa-image text-indigo-500"></i>
<span class="text-sm truncate max-w-xs">portrait-woman-beach.jpg</span>
</div>
<span class="text-xs text-gray-500">2.4MB</span>
</div>
<div class="flex items-center justify-between p-2 bg-white rounded">
<div class="flex items-center space-x-3">
<i class="fas fa-image text-indigo-500"></i>
<span class="text-sm truncate max-w-xs">selfie-girl-mirror.png</span>
</div>
<span class="text-xs text-gray-500">3.1MB</span>
</div>
<div class="flex items-center justify-between p-2 bg-white rounded">
<div class="flex items-center space-x-3">
<i class="fas fa-image text-indigo-500"></i>
<span class="text-sm truncate max-w-xs">fashion-model-runway.jpg</span>
</div>
<span class="text-xs text-gray-500">4.7MB</span>
</div>
</div>
</div>
<div class="bg-gray-50 rounded-lg p-4">
<h3 class="font-medium text-gray-700 mb-3">Processing Progress</h3>
<div class="mb-2 flex justify-between text-sm text-gray-600">
<span>Processing: portrait-woman-beach.jpg</span>
<span>25%</span>
</div>
<div class="w-full bg-gray-200 rounded-full h-2.5">
<div class="progress-bar bg-indigo-600 h-2.5 rounded-full" style="width: 25%"></div>
</div>
<div class="mt-4 text-sm text-gray-500">
<p><i class="fas fa-info-circle mr-2"></i> Detected: shirt, pants</p>
<p class="mt-1"><i class="fas fa-clock mr-2"></i> Estimated time remaining: 1 min 23 sec</p>
</div>
</div>
</div>
</div>
</div>
<!-- Manual Mode Tab -->
<div id="manual" class="tab-content p-6">
<div class="grid md:grid-cols-2 gap-8">
<!-- Left Column -->
<div>
<h2 class="text-xl font-bold mb-4 text-gray-800">Manual Configuration</h2>
<p class="text-gray-600 mb-6">Fine-tune the processing by manually selecting clothing items and adjusting parameters.</p>
<div class="file-drop-area relative p-8 rounded-lg border-2 border-dashed mb-6">
<input type="file" id="manualFileInput" class="absolute inset-0 w-full h-full opacity-0 cursor-pointer">
<div class="text-center">
<i class="fas fa-cloud-upload-alt text-4xl text-indigo-500 mb-3"></i>
<h3 class="text-lg font-medium text-gray-700">Upload Single Image</h3>
<p class="text-gray-500 mt-1">or click to browse file</p>
</div>
</div>
<div class="mb-6">
<h3 class="font-medium text-gray-700 mb-3">Select Clothing Items</h3>
<div class="grid grid-cols-2 gap-3">
<label class="prompt-card flex items-center space-x-2 p-3 border rounded-lg cursor-pointer hover:border-indigo-300 hover:bg-indigo-50">
<input type="checkbox" class="form-checkbox h-5 w-5 text-indigo-600 rounded">
<div>
<span class="font-medium">Shirt/Top</span>
<p class="text-xs text-gray-500">Removes upper clothing</p>
</div>
</label>
<label class="prompt-card flex items-center space-x-2 p-3 border rounded-lg cursor-pointer hover:border-indigo-300 hover:bg-indigo-50">
<input type="checkbox" class="form-checkbox h-5 w-5 text-indigo-600 rounded">
<div>
<span class="font-medium">Pants/Skirt</span>
<p class="text-xs text-gray-500">Removes lower clothing</p>
</div>
</label>
<label class="prompt-card flex items-center space-x-2 p-3 border rounded-lg cursor-pointer hover:border-indigo-300 hover:bg-indigo-50">
<input type="checkbox" class="form-checkbox h-5 w-5 text-indigo-600 rounded">
<div>
<span class="font-medium">Bra</span>
<p class="text-xs text-gray-500">Removes bra only</p>
</div>
</label>
<label class="prompt-card flex items-center space-x-2 p-3 border rounded-lg cursor-pointer hover:border-indigo-300 hover:bg-indigo-50">
<input type="checkbox" class="form-checkbox h-5 w-5 text-indigo-600 rounded">
<div>
<span class="font-medium">Underwear</span>
<p class="text-xs text-gray-500">Removes underwear</p>
</div>
</label>
<label class="prompt-card flex items-center space-x-2 p-3 border rounded-lg cursor-pointer hover:border-indigo-300 hover:bg-indigo-50">
<input type="checkbox" class="form-checkbox h-5 w-5 text-indigo-600 rounded">
<div>
<span class="font-medium">Dress</span>
<p class="text-xs text-gray-500">Removes full dress</p>
</div>
</label>
<label class="prompt-card flex items-center space-x-2 p-3 border rounded-lg cursor-pointer hover:border-indigo-300 hover:bg-indigo-50">
<input type="checkbox" class="form-checkbox h-5 w-5 text-indigo-600 rounded">
<div>
<span class="font-medium">Swimsuit</span>
<p class="text-xs text-gray-500">Removes swimwear</p>
</div>
</label>
</div>
</div>
<div class="mb-6">
<h3 class="font-medium text-gray-700 mb-2">Advanced Options</h3>
<div class="space-y-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Body Type</label>
<select class="w-full border-gray-300 rounded-lg shadow-sm focus:border-indigo-500 focus:ring-indigo-500">
<option>Realistic (Default)</option>
<option>Enhanced</option>
<option>Perfect</option>
<option>Custom</option>
</select>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Skin Detail</label>
<select class="w-full border-gray-300 rounded-lg shadow-sm focus:border-indigo-500 focus:ring-indigo-500">
<option>Ultra Detailed</option>
<option>Detailed</option>
<option>Normal</option>
<option>Smooth</option>
</select>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Nipple Style</label>
<select class="w-full border-gray-300 rounded-lg shadow-sm focus:border-indigo-500 focus:ring-indigo-500">
<option>Natural</option>
<option>Perfect</option>
<option>Erect</option>
<option>Subtle</option>
</select>
</div>
</div>
</div>
</div>
<!-- Right Column -->
<div>
<div class="sticky top-4">
<h3 class="font-medium text-gray-700 mb-3">Image Preview</h3>
<div class="bg-gray-200 rounded-lg aspect-square flex items-center justify-center mb-4 overflow-hidden">
<div class="text-center p-6 text-gray-500">
<i class="fas fa-image text-4xl mb-3"></i>
<p>No image selected</p>
</div>
</div>
<div class="bg-gray-50 rounded-lg p-4 mb-6">
<h3 class="font-medium text-gray-700 mb-2">Generated Prompt</h3>
<div class="bg-white p-3 rounded border text-sm font-mono text-gray-700 mb-3 h-32 overflow-y-auto">
RAW Photo, (naked woman:2), photorealistic, ultra detailed, masterpiece, best quality, (woman:1.3), (nude body:1.5), (bare breasts:1.4), (perfect nipples:1.3), smooth skin, realistic skin texture
</div>
<button class="w-full bg-indigo-600 hover:bg-indigo-700 text-white py-2 px-4 rounded-lg text-sm font-medium transition">
<i class="fas fa-copy mr-2"></i> Copy Prompt
</button>
</div>
<div class="bg-gray-50 rounded-lg p-4 mb-6">
<h3 class="font-medium text-gray-700 mb-2">Negative Prompt</h3>
<div class="bg-white p-3 rounded border text-sm font-mono text-gray-700 mb-3 h-24 overflow-y-auto">
deformed, distorted, hair, tattoo, wet, water, clothing, clothes, cloth, silk, fabric, leather, underwear, bra, pantie, 3d render, cartoon, blurry, text, logo, duplicate body parts, bad anatomy
</div>
<button class="w-full bg-indigo-600 hover:bg-indigo-700 text-white py-2 px-4 rounded-lg text-sm font-medium transition">
<i class="fas fa-copy mr-2"></i> Copy Negative Prompt
</button>
</div>
<button class="w-full bg-indigo-600 hover:bg-indigo-700 text-white py-3 px-4 rounded-lg font-medium transition flex items-center justify-center">
<i class="fas fa-magic mr-2"></i> Generate Preview
</button>
</div>
</div>
</div>
</div>
<!-- Batch Mode Tab -->
<div id="batch" class="tab-content p-6">
<div class="grid md:grid-cols-2 gap-8">
<!-- Left Column -->
<div>
<h2 class="text-xl font-bold mb-4 text-gray-800">Batch Processing</h2>
<p class="text-gray-600 mb-6">Process multiple images at once with consistent settings across all files.</p>
<div class="file-drop-area relative p-8 rounded-lg border-2 border-dashed mb-6">
<input type="file" id="batchFileInput" class="absolute inset-0 w-full h-full opacity-0 cursor-pointer" multiple directory webkitdirectory>
<div class="text-center">
<i class="fas fa-folder-open text-4xl text-indigo-500 mb-3"></i>
<h3 class="text-lg font-medium text-gray-700">Upload Folder or Multiple Files</h3>
<p class="text-gray-500 mt-1">or click to browse files</p>
<p class="text-xs text-gray-400 mt-2">Supports JPG, PNG up to 10MB per file</p>
</div>
</div>
<div class="mb-6">
<h3 class="font-medium text-gray-700 mb-3">Batch Settings</h3>
<div class="space-y-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Processing Mode</label>
<select class="w-full border-gray-300 rounded-lg shadow-sm focus:border-indigo-500 focus:ring-indigo-500">
<option>Auto-detect clothing (Recommended)</option>
<option>Apply same clothing selection to all</option>
<option>Use CSV configuration</option>
</select>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Output Naming</label>
<select class="w-full border-gray-300 rounded-lg shadow-sm focus:border-indigo-500 focus:ring-indigo-500">
<option>Original name + suffix</option>
<option>Sequential numbering</option>
<option>Custom pattern</option>
</select>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Parallel Processing</label>
<select class="w-full border-gray-300 rounded-lg shadow-sm focus:border-indigo-500 focus:ring-indigo-500">
<option>1 image at a time</option>
<option>2 images in parallel</option>
<option>4 images in parallel</option>
<option>8 images in parallel</option>
</select>
</div>
</div>
</div>
<div class="mb-6">
<h3 class="font-medium text-gray-700 mb-2">Output Options</h3>
<div class="space-y-3">
<label class="flex items-center space-x-3">
<input type="checkbox" class="form-checkbox h-5 w-5 text-indigo-600 rounded" checked>
<span>Save original images</span>
</label>
<label class="flex items-center space-x-3">
<input type="checkbox" class="form-checkbox h-5 w-5 text-indigo-600 rounded" checked>
<span>Save mask images</span>
</label>
<label class="flex items-center space-x-3">
<input type="checkbox" class="form-checkbox h-5 w-5 text-indigo-600 rounded">
<span>Create ZIP archive when complete</span>
</label>
</div>
</div>
</div>
<!-- Right Column -->
<div>
<h3 class="font-medium text-gray-700 mb-3">Batch Queue</h3>
<div class="bg-gray-50 rounded-lg p-4 mb-6">
<div class="flex justify-between items-center mb-3">
<span class="text-sm font-medium">0 files selected</span>
<button class="text-sm text-indigo-600 hover:text-indigo-800">Clear All</button>
</div>
<div class="bg-white rounded border max-h-64 overflow-y-auto">
<div class="p-4 text-center text-gray-500">
<i class="fas fa-folder-open text-2xl mb-2"></i>
<p>No files added yet</p>
</div>
</div>
</div>
<div class="bg-gray-50 rounded-lg p-4 mb-6">
<h3 class="font-medium text-gray-700 mb-3">Batch Progress</h3>
<div class="text-center py-8 text-gray-500">
<i class="fas fa-hourglass-half text-3xl mb-3"></i>
<p>Batch not started</p>
</div>
</div>
<div class="bg-indigo-50 border border-indigo-100 rounded-lg p-4">
<h3 class="font-medium text-indigo-700 mb-2 flex items-center">
<i class="fas fa-info-circle mr-2"></i> Batch Processing Tips
</h3>
<ul class="text-sm text-indigo-600 space-y-2">
<li class="flex items-start">
<i class="fas fa-check-circle mt-1 mr-2 text-indigo-400"></i>
<span>For best results, use images with similar lighting conditions</span>
</li>
<li class="flex items-start">
<i class="fas fa-check-circle mt-1 mr-2 text-indigo-400"></i>
<span>Processing 4 images in parallel is optimal for most systems</span>
</li>
<li class="flex items-start">
<i class="fas fa-check-circle mt-1 mr-2 text-indigo-400"></i>
<span>Create a ZIP archive for easy sharing of multiple results</span>
</li>
</ul>
</div>
<button class="w-full mt-6 bg-indigo-600 hover:bg-indigo-700 text-white py-3 px-4 rounded-lg font-medium transition flex items-center justify-center">
<i class="fas fa-play-circle mr-2"></i> Start Batch Processing
</button>
</div>
</div>
</div>
</div>
</main>
<!-- Footer -->
<footer class="bg-gray-800 text-white py-6">
<div class="container mx-auto px-4">
<div class="flex flex-col md:flex-row justify-between items-center">
<div class="mb-4 md:mb-0">
<h2 class="text-lg font-bold flex items-center">
<i class="fas fa-robot mr-2"></i> Fooocus Undress AI
</h2>
<p class="text-sm text-gray-400 mt-1">Local AI-powered image processing tool</p>
</div>
<div class="flex space-x-6">
<a href="#" class="text-gray-400 hover:text-white transition">
<i class="fab fa-github text-xl"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white transition">
<i class="fas fa-question-circle text-xl"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white transition">
<i class="fas fa-cog text-xl"></i>
</a>
</div>
</div>
<div class="mt-6 pt-6 border-t border-gray-700 text-sm text-gray-400 text-center">
<p>© 2023 Fooocus Undress AI. This is a local application - no images are uploaded to any server.</p>
</div>
</div>
</footer>
</div>
<script>
// Tab switching functionality
document.querySelectorAll('.tab-btn').forEach(btn => {
btn.addEventListener('click', () => {
// Remove active class from all tabs and buttons
document.querySelectorAll('.tab-btn').forEach(b => {
b.classList.remove('text-indigo-600', 'border-indigo-600');
b.classList.add('text-gray-500');
});
document.querySelectorAll('.tab-content').forEach(content => {
content.classList.remove('active');
});
// Add active class to clicked tab
btn.classList.add('text-indigo-600', 'border-indigo-600');
btn.classList.remove('text-gray-500');
const tabId = btn.getAttribute('data-tab');
document.getElementById(tabId).classList.add('active');
});
});
// File drop area highlighting
const dropArea = document.getElementById('dropArea');
const fileInput = document.getElementById('fileInput');
['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {
dropArea.addEventListener(eventName, preventDefaults, false);
});
function preventDefaults(e) {
e.preventDefault();
e.stopPropagation();
}
['dragenter', 'dragover'].forEach(eventName => {
dropArea.addEventListener(eventName, highlight, false);
});
['dragleave', 'drop'].forEach(eventName => {
dropArea.addEventListener(eventName, unhighlight, false);
});
function highlight() {
dropArea.classList.add('active');
}
function unhighlight() {
dropArea.classList.remove('active');
}
dropArea.addEventListener('drop', handleDrop, false);
function handleDrop(e) {
const dt = e.dataTransfer;
const files = dt.files;
handleFiles(files);
}
fileInput.addEventListener('change', function() {
handleFiles(this.files);
});
function handleFiles(files) {
console.log('Files to process:', files);
// Here you would handle the file processing
}
// Process button animation
const processBtn = document.getElementById('processBtn');
processBtn.addEventListener('click', function() {
this.innerHTML = '<i class="fas fa-spinner fa-spin mr-2"></i> Processing...';
this.classList.add('cursor-not-allowed', 'opacity-75');
// Simulate processing
setTimeout(() => {
this.innerHTML = '<i class="fas fa-check mr-2"></i> Processing Complete';
setTimeout(() => {
this.innerHTML = '<i class="fas fa-play mr-2"></i> Start Processing';
this.classList.remove('cursor-not-allowed', 'opacity-75');
}, 2000);
}, 3000);
});
</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=SirJas0n/fooocus-test" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>