3.7 KiB
3.7 KiB
@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
- memory — (no submodules)
- memory — (no submodules)
- sharp — (no submodules)
- sharp — (no submodules)
- compressor — (no submodules)
- compressor — (no submodules)
- errors — (no submodules)
- compress-image-error — (no submodules)
- schemas — (no submodules)
- compress-options.schema — (no submodules)
- utils — (no submodules)
- image-utils — (no submodules)
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
src/core/compressor/compressor.md—ImageCompressorcore andcreateCompressorsrc/adapters/memory/memory.md—MemoryAdapterfor testing without native depssrc/adapters/sharp/sharp.md—SharpAdapterfor Node.js production compressionsrc/errors/compress-image-error.md—CompressImageErrorand error codessrc/schemas/compress-options.schema.md— Zod schemas for compression optionssrc/types/compress-image.types.md— TypeScript interfaces for results and adapterssrc/utils/image-utils.md— Pure TypeScript image utilities
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