// Complete image upload and analysis workflow
async function handleImageUpload(file: File) {
try {
// Show loading state
showLoadingIndicator();
// Convert to base64 for analysis
const base64Image = await fileToBase64(file);
// Analyze the image
const [visionResponse, metadataResponse] = await Promise.all([
client.media.completions({
messages: [{
role: 'user',
content: [
{ type: 'text', text: 'Describe this image in detail.' },
{ type: 'image_url', image_url: { url: base64Image } }
]
}]
}),
client.media.analyze({
media_url: base64Image,
metadata: ['categories', 'tags', 'objects']
})
]);
// Display results
displayAnalysisResults({
description: visionResponse.choices[0].message.content,
categories: metadataResponse.metadata?.categories,
tags: metadataResponse.metadata?.tags,
objects: metadataResponse.metadata?.objects
});
} catch (error) {
showErrorMessage('Failed to analyze image: ' + error.message);
} finally {
hideLoadingIndicator();
}
}