Files
skills/docs/media/image/exif
2026-05-29 08:20:56 +01:00
..
2026-05-29 08:20:56 +01:00
2026-05-29 08:20:56 +01:00

@suaveplan/exif - Dependency-free, runtime-agnostic EXIF/XMP/IPTC metadata reader, writer, and stripper for JPEG and PNG images

Dependency-free, runtime-agnostic EXIF/XMP/IPTC metadata reader, writer, and stripper for JPEG and PNG images. Parses JPEG segment chains to locate and decode the EXIF IFD (TIFF byte-order aware, including GPS and SubIFD), IPTC IIM (caption, keywords, copyright), and XMP Dublin Core (raw XML string extraction). Writes back a revised EXIF IFD without re-encoding the image pixels, and strips all metadata segments for privacy-preserving image export. Includes a ByteReader/ByteWriter pair with rational arithmetic helpers and CRC-32 for PNG chunks.

Documentation tree

  • crc32 — (no submodules)
    • crc32 — (no submodules)
  • rational — (no submodules)
  • reader — (no submodules)
  • writer — (no submodules)
  • read-metadata — The main entry point for reading image metadata. Orchestrates format detection, JPEG segment parsing, and EXIF/XMP/IPTC…
  • strip-metadata — Removes metadata segments from a JPEG image buffer and returns a clean image with only the pixel data intact. Privacy-s…
  • write-metadata — Writes or updates EXIF metadata in a JPEG image buffer. Merges the provided patch over any existing EXIF data and rebui…
  • errors — (no submodules)
  • exif — (no submodules)
  • format — (no submodules)
  • ifd — (no submodules)
    • parse — (no submodules)
  • iptc — (no submodules)
  • jpeg — (no submodules)
  • xmp — (no submodules)

Installation

bun add @suaveplan/exif

Quick Start

import { readMetadata, writeMetadata, stripMetadata } from "@suaveplan/exif";

// Read all metadata
const meta = readMetadata(imageBuffer);
console.log(meta.format); // "jpeg"
console.log(meta.exif?.make); // "Canon"
console.log(meta.exif?.gps?.latitude);

// Write / update metadata
const updated = writeMetadata(imageBuffer, { orientation: 1, software: "My App" });

// Strip all metadata for privacy
const clean = stripMetadata(imageBuffer);

Modules

Subpath Exports

Subpath Description
@suaveplan/exif Main API: readMetadata, writeMetadata, stripMetadata
@suaveplan/exif/binary ByteReader, ByteWriter, rational utilities, CRC-32
@suaveplan/exif/format detectImageFormat — magic byte detection
@suaveplan/exif/exif readExifFromTiffBuffer — raw TIFF/EXIF parsing
@suaveplan/exif/iptc readIptc — IPTC IIM parsing
@suaveplan/exif/xmp readXmp — XMP Dublin Core parsing
@suaveplan/exif/errors ExifError, EXIF_CODES