mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-04-14 13:53:29 +08:00
Ports functionality from 10+ separate plugins into ECC so users only need one plugin installed. Consolidates: pr-review-toolkit, feature-dev, commit-commands, hookify, code-simplifier, security-guidance, frontend-design, explanatory-output-style, and personal skills. New agents (8): code-architect, code-explorer, code-simplifier, comment-analyzer, conversation-analyzer, pr-test-analyzer, silent-failure-hunter, type-design-analyzer New commands (9): commit, commit-push-pr, clean-gone, review-pr, feature-dev, hookify, hookify-list, hookify-configure, hookify-help New skills (8): frontend-design, hookify-rules, github-ops, knowledge-ops, lead-intelligence, oura-health, pmx-guidelines, remotion Enhanced skills (8): article-writing, content-engine, market-research, investor-materials, investor-outreach, x-api, security-scan, autonomous-loops — merged with personal skill content New hook: security-reminder.py (pattern-based OWASP vulnerability warnings on file edits) Totals: 36 agents, 69 commands, 128 skills, 29 hook scripts
131 lines
2.7 KiB
Markdown
131 lines
2.7 KiB
Markdown
---
|
|
name: images
|
|
description: Embedding images in Remotion using the <Img> component
|
|
metadata:
|
|
tags: images, img, staticFile, png, jpg, svg, webp
|
|
---
|
|
|
|
# Using images in Remotion
|
|
|
|
## The `<Img>` component
|
|
|
|
Always use the `<Img>` component from `remotion` to display images:
|
|
|
|
```tsx
|
|
import { Img, staticFile } from "remotion";
|
|
|
|
export const MyComposition = () => {
|
|
return <Img src={staticFile("photo.png")} />;
|
|
};
|
|
```
|
|
|
|
## Important restrictions
|
|
|
|
**You MUST use the `<Img>` component from `remotion`.** Do not use:
|
|
|
|
- Native HTML `<img>` elements
|
|
- Next.js `<Image>` component
|
|
- CSS `background-image`
|
|
|
|
The `<Img>` component ensures images are fully loaded before rendering, preventing flickering and blank frames during video export.
|
|
|
|
## Local images with staticFile()
|
|
|
|
Place images in the `public/` folder and use `staticFile()` to reference them:
|
|
|
|
```
|
|
my-video/
|
|
├─ public/
|
|
│ ├─ logo.png
|
|
│ ├─ avatar.jpg
|
|
│ └─ icon.svg
|
|
├─ src/
|
|
├─ package.json
|
|
```
|
|
|
|
```tsx
|
|
import { Img, staticFile } from "remotion";
|
|
|
|
<Img src={staticFile("logo.png")} />
|
|
```
|
|
|
|
## Remote images
|
|
|
|
Remote URLs can be used directly without `staticFile()`:
|
|
|
|
```tsx
|
|
<Img src="https://example.com/image.png" />
|
|
```
|
|
|
|
Ensure remote images have CORS enabled.
|
|
|
|
For animated GIFs, use the `<Gif>` component from `@remotion/gif` instead.
|
|
|
|
## Sizing and positioning
|
|
|
|
Use the `style` prop to control size and position:
|
|
|
|
```tsx
|
|
<Img
|
|
src={staticFile("photo.png")}
|
|
style={{
|
|
width: 500,
|
|
height: 300,
|
|
position: "absolute",
|
|
top: 100,
|
|
left: 50,
|
|
objectFit: "cover",
|
|
}}
|
|
/>
|
|
```
|
|
|
|
## Dynamic image paths
|
|
|
|
Use template literals for dynamic file references:
|
|
|
|
```tsx
|
|
import { Img, staticFile, useCurrentFrame } from "remotion";
|
|
|
|
const frame = useCurrentFrame();
|
|
|
|
// Image sequence
|
|
<Img src={staticFile(`frames/frame${frame}.png`)} />
|
|
|
|
// Selecting based on props
|
|
<Img src={staticFile(`avatars/${props.userId}.png`)} />
|
|
|
|
// Conditional images
|
|
<Img src={staticFile(`icons/${isActive ? "active" : "inactive"}.svg`)} />
|
|
```
|
|
|
|
This pattern is useful for:
|
|
|
|
- Image sequences (frame-by-frame animations)
|
|
- User-specific avatars or profile images
|
|
- Theme-based icons
|
|
- State-dependent graphics
|
|
|
|
## Getting image dimensions
|
|
|
|
Use `getImageDimensions()` to get the dimensions of an image:
|
|
|
|
```tsx
|
|
import { getImageDimensions, staticFile } from "remotion";
|
|
|
|
const { width, height } = await getImageDimensions(staticFile("photo.png"));
|
|
```
|
|
|
|
This is useful for calculating aspect ratios or sizing compositions:
|
|
|
|
```tsx
|
|
import { getImageDimensions, staticFile, CalculateMetadataFunction } from "remotion";
|
|
|
|
const calculateMetadata: CalculateMetadataFunction = async () => {
|
|
const { width, height } = await getImageDimensions(staticFile("photo.png"));
|
|
return {
|
|
width,
|
|
height,
|
|
};
|
|
};
|
|
```
|