| name | image-storage-embedding-split |
| description | Storing images at embed size loses the original: |
| lastReviewed | 2026-04-30T00:00:00.000Z |
Image Storage vs Embedding Split
The Problem
Storing images at embed size loses the original:
- Can't upscale later
- Can't use for different contexts
- Quality degradation is permanent
The Solution
Keep originals at full resolution. Embed at reduced size.
const sharp = require('sharp');
async function processImage(inputPath, outputDir) {
const filename = path.basename(inputPath, path.extname(inputPath));
const original = await sharp(inputPath)
.resize(512, 512, { fit: 'inside' })
.toFile(path.join(outputDir, `${filename}-512.png`));
const embed = await sharp(inputPath)
.resize(256, 256, { fit: 'inside' })
.toBuffer();
return {
originalPath: path.join(outputDir, `${filename}-512.png`),
embedDataUri: `data:image/png;base64,${embed.toString('base64')}`,
embedSize: 256
};
}
Storage Schema
{
"images": [
{
"id": "avatar-001",
"originalPath": "assets/avatar-001-512.png",
"embedDataUri": "data:image/png;base64,iVBOR...",
"embedSize": 256,
"originalSize": 512
}
]
}
Token Savings
| Size | Base64 Size | Token Estimate |
|---|
| 512px | ~42KB | ~10,500 tokens |
| 256px | ~13KB | ~3,250 tokens |
| Savings | ~70% | ~7,250 tokens |
Verification
- Original file exists at full resolution
- Embedded version is at reduced size
- Schema documents both dimensions
- Can regenerate embed from original
When to Apply
- AI context windows with images
- Visual memory systems
- Any system with storage/display size trade-offs
Tags
images ai tokens storage