# Image Displays AI-generated images from the AI SDK. The `Image` component displays AI-generated images from the AI SDK. It accepts a [`Experimental_GeneratedImage`](/docs/reference/ai-sdk-core/generate-image) object from the AI SDK's `generateImage` function and automatically renders it as an image. See `scripts/image.tsx` for this example. ## Installation ```bash npx ai-elements@latest add image ``` ## Usage with AI SDK Build a simple app allowing a user to generate an image given a prompt. Install the `@ai-sdk/openai` package: ```package-install npm i @ai-sdk/openai ``` Add the following component to your frontend: ```tsx title="app/page.tsx" "use client"; import { Image } from "@/components/ai-elements/image"; import { PromptInput, type PromptInputMessage, PromptInputTextarea, PromptInputSubmit, } from "@/components/ai-elements/prompt-input"; import { useState } from "react"; import { Spinner } from "@/components/ui/spinner"; const ImageDemo = () => { const [prompt, setPrompt] = useState("A futuristic cityscape at sunset"); const [imageData, setImageData] = useState(null); const [isLoading, setIsLoading] = useState(false); const handleSubmit = async (message: PromptInputMessage) => { if (!message.text.trim()) return; setPrompt(""); setIsLoading(true); try { const response = await fetch("/api/image", { method: "POST", body: JSON.stringify({ prompt: message.text.trim() }), }); const data = await response.json(); setImageData(data); } catch (error) { console.error("Error generating image:", error); } finally { setIsLoading(false); } }; return (
{imageData && (
Generated image
)} {isLoading && }
setPrompt(e.currentTarget.value)} className="pr-12" />
); }; export default ImageDemo; ``` Add the following route to your backend: ```ts title="app/api/image/route.ts" import { openai } from "@ai-sdk/openai"; import { experimental_generateImage } from "ai"; export async function POST(req: Request) { const { prompt }: { prompt: string } = await req.json(); const { image } = await experimental_generateImage({ model: openai.image("dall-e-3"), prompt: prompt, size: "1024x1024", }); return Response.json({ base64: image.base64, uint8Array: image.uint8Array, mediaType: image.mediaType, }); } ``` ## Features - Accepts `Experimental_GeneratedImage` objects directly from the AI SDK - Automatically creates proper data URLs from base64-encoded image data - Supports all standard HTML image attributes - Responsive by default with `max-w-full h-auto` styling - Customizable with additional CSS classes - Includes proper TypeScript types for AI SDK compatibility ## Props ### `` | Prop | Type | Default | Description | |------|------|---------|-------------| | `alt` | `string` | - | Alternative text for the image. | | `className` | `string` | - | Additional CSS classes to apply to the image. | | `...props` | `Experimental_GeneratedImage` | - | The image data to display, as returned by the AI SDK. |