Extract image dimensions, color space, format, and EXIF data (location, camera info, timestamp). Store metadata in database for search and filtering. Strip sensitive EXIF data before storage. By the end, images have rich metadata for display and discovery.
← Back to Module 05 overviewimages table: width, height, format, upload_timestamp.GET /images/:id returns dimensions and metadata.Install: npm install exifparser
Create src/utils/metadataExtractor.ts:
import sharp from 'sharp';
import ExifParser from 'exifparser';
export async function extractMetadata(buffer: Buffer) {
const sharpImage = sharp(buffer);
const metadata = await sharpImage.metadata();
let exif = {};
try {
const parser = ExifParser.create(buffer);
const result = parser.parse();
exif = {
camera: result.tags.Model || result.tags.Make,
timestamp: result.tags.DateTime,
focal_length: result.tags.FocalLength,
iso: result.tags.ISOSpeedRatings,
aperture: result.tags.FNumber
};
} catch (err) {
// No EXIF data
}
return {
width: metadata.width,
height: metadata.height,
format: metadata.format,
colorspace: metadata.space,
hasAlpha: metadata.hasAlpha,
exif
};
}