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;
}




0 Reviews