fix: use base64 response format for gpt-image-1-mini

This commit is contained in:
Ajax Davis 2025-12-28 19:16:18 +10:00
parent 16f8f79fbf
commit d5efd970c2

View file

@ -24,33 +24,32 @@ function getOpenAIClient(): OpenAI {
export async function generateOGImage(prompt: string): Promise<Buffer> {
try {
const client = getOpenAIClient();
console.log('[OG] Calling OpenAI image generation...');
const response = await client.images.generate({
model: 'gpt-image-1-mini',
prompt,
n: 1,
size: '1536x1024', // Closest aspect ratio to 1200x630, will serve as-is
quality: 'low', // Use low for faster generation and lower cost
size: '1024x1024',
quality: 'low',
});
console.log('[OG] OpenAI response received');
if (!response.data || response.data.length === 0) {
throw new Error('No data returned from OpenAI');
}
const imageUrl = response.data[0]?.url;
if (!imageUrl) {
throw new Error('No image URL returned from OpenAI');
// gpt-image-1-mini returns base64 encoded image
const b64 = response.data[0]?.b64_json;
if (!b64) {
throw new Error('No base64 image data returned from OpenAI');
}
// Fetch the image
const imageResponse = await fetch(imageUrl);
if (!imageResponse.ok) {
throw new Error(`Failed to fetch generated image: ${imageResponse.status}`);
}
const arrayBuffer = await imageResponse.arrayBuffer();
return Buffer.from(arrayBuffer);
console.log(`[OG] Got base64 image (${b64.length} chars)`);
return Buffer.from(b64, 'base64');
} catch (error) {
console.error('OpenAI image generation failed:', error);
console.error('[OG] OpenAI image generation failed:', error);
throw error;
}
}