Files
2026-05-27 23:47:53 +01:00
..
2026-05-27 23:47:53 +01:00
2026-05-27 23:47:53 +01:00
2026-05-27 23:47:53 +01:00
2026-05-27 23:47:53 +01:00
2026-05-27 23:47:53 +01:00
2026-05-27 23:47:53 +01:00
2026-05-27 23:47:53 +01:00

@suaveplan/compress-image - Runtime-agnostic image compression utilities: resize, quality reduction, format conversion, and metadata stripping via pluggable adapters

Runtime-agnostic image compression utilities with pluggable adapters for Node.js (Sharp) and testing (MemoryAdapter). Supports resize, quality reduction, format conversion (JPEG, PNG, WebP, AVIF), and metadata stripping. The compressor core is pure TypeScript with zero runtime dependencies; only the Sharp adapter requires the native sharp library.

Documentation tree

Installation

bun add @suaveplan/compress-image

Quick Start

import { createCompressor } from "@suaveplan/compress-image/compressor";
import { SharpAdapter } from "@suaveplan/compress-image/adapters/sharp";
import sharp from "sharp";

const compressor = createCompressor(new SharpAdapter(sharp));

const result = await compressor.compress(imageBuffer, {
    format: "webp",
    quality: 75,
    width: 1280,
    height: 720,
    resizeMode: "cover",
    stripMetadata: true,
});

console.log(result.compressionRatio, result.compressedSize);

Modules

Subpath Exports

  • . — All public types, errors, utilities, adapters, and the compressor
  • ./compressor — ImageCompressor, createCompressor
  • ./adapters/memory — MemoryAdapter
  • ./adapters/sharp — SharpAdapter, SharpLike, SharpInstance
  • ./errors — CompressImageError, COMPRESS_IMAGE_CODES