← Back to Home

How to Generate Images with Gemini AI

Updated March 5, 2026
geminiimage generationgoogle genaiaspect ratio4Kbase64

Generating Images with Gemini AI

There are two valid ways to generate images, depending on your system design.

Approach A: Standalone Per-image Generation

Good for simple tools and scripts.

Common Models

Model Typical Use
gemini-2.5-flash-image Cost-efficient single-image generation
gemini-3-pro-image-preview Higher-fidelity generation

Basic Call

const response = await genAI.models.generateContent({
  model: 'gemini-2.5-flash-image',
  contents: prompt,
  config: {
    responseModalities: ['IMAGE'],
    imageConfig: {
      aspectRatio: '9:16',
      imageSize: '1K', // or '2K', '4K'
    },
  },
});

Approach B: Pipeline-oriented Generation

Good for multi-slide video systems.

const response = await genAI.models.generateContent({
  model: 'gemini-3-pro-image-preview',
  contents: prompt,
  config: {
    responseModalities: ['IMAGE'],
    imageConfig: { aspectRatio: '9:16', imageSize: '4K' },
  },
});

Extract Base64 Image Data

const parts = response.response.candidates?.[0]?.content?.parts;
if (!parts || parts.length === 0) throw new Error('No image data in response');

const imagePart = parts.find((part: any) => part.inlineData?.data);
if (!imagePart) throw new Error('No inline image data found');

const imageBuffer = Buffer.from(imagePart.inlineData.data, 'base64');

Grounding (Optional)

For supported models/modalities, use conditional grounding helper:

config: withGoogleSearchGrounding(modelId, {
  responseModalities: ['IMAGE'],
  imageConfig: { aspectRatio: '9:16', imageSize: '4K' },
})

Prompt Quality Pattern

A practical prompt structure:

Which Approach to Choose