Read more

// Replace your generateImage function with this FIXED version: async function generateImage() { const prompt = document.getElementById('prompt').value.trim(); if (!prompt) { alert('Please enter a description!'); return; } const loading = document.getElementById('loading'); const result = document.getElementById('result'); const btn = document.querySelector('.generate-btn'); loading.classList.add('active'); result.classList.remove('active'); btn.disabled = true; // Try multiple APIs in order const apis = [ // API 1: Pollinations `https://image.pollinations.ai/prompt/${encodeURIComponent(prompt)}?width=1024&height=1024&nologo=true&seed=${Math.random()}`, // API 2: Alternative endpoint `https://image.pollinations.ai/prompt/${encodeURIComponent(prompt)}?width=1024&height=1024&nologo=true`, // API 3: With different parameters `https://image.pollinations.ai/prompt/${encodeURIComponent(prompt + ', high quality, detailed')}?width=1024&height=1024` ]; let success = false; for (let apiUrl of apis) { try { const img = new Image(); await new Promise((resolve, reject) => { img.onload = resolve; img.onerror = reject; img.src = apiUrl; // Timeout after 15 seconds per API setTimeout(() => reject(new Error('Timeout')), 15000); }); document.getElementById('generated-image').src = apiUrl; loading.classList.remove('active'); result.classList.add('active'); success = true; break; } catch (e) { console.log('API failed, trying next...'); continue; } } if (!success) { // Final fallback alert('AI service busy. Using demo images. Please try again later.'); const keywords = prompt.split(' ')[0] || 'nature'; document.getElementById('generated-image').src = `https://source.unsplash.com/800x800/?${keywords}`; loading.classList.remove('active'); result.classList.add('active'); } btn.disabled = false; }