skills/remotion-video-creation/rules/images.md
Always use the `` component from remotion to display images:
import { Img, staticFile } from "remotion";
export const MyComposition = () => {
return ;
};
You MUST use the `` component from remotion. Do not use:
<Image> componentbackground-imageThe `` component ensures images are fully loaded before rendering, preventing flickering and blank frames during video export.
Place images in the public/ folder and use staticFile() to reference them:
my-video/
├─ public/
│ ├─ logo.png
│ ├─ avatar.jpg
│ └─ icon.svg
├─ src/
├─ package.json
import { Img, staticFile } from "remotion";
Remote URLs can be used directly without staticFile():
Ensure remote images have CORS enabled.
For animated GIFs, use the <Gif> component from @remotion/gif instead.
Use the style prop to control size and position:
Use template literals for dynamic file references:
import { Img, staticFile, useCurrentFrame } from "remotion";
const frame = useCurrentFrame();
// Image sequence
// Selecting based on props
// Conditional images
This pattern is useful for:
Use getImageDimensions() to get the dimensions of an image:
import { getImageDimensions, staticFile } from "remotion";
const { width, height } = await getImageDimensions(staticFile("photo.png"));
This is useful for calculating aspect ratios or sizing compositions:
import { getImageDimensions, staticFile, CalculateMetadataFunction } from "remotion";
const calculateMetadata: CalculateMetadataFunction = async () => {
const { width, height } = await getImageDimensions(staticFile("photo.png"));
return {
width,
height,
};
};