image-compressor-core
v1.1.1
Published
A lightweight, browser-based image compressor using Canvas API.
Maintainers
Readme
Image Compressor Core
A simple, zero-dependency library to compress images in the browser.
Installation
npm install image-compressor-coreUsage
Basic Compression
import { ImageCompressor } from 'image-compressor-core';
// 1. Convert file to DataURL
const dataUrl = await ImageCompressor.fileToDataURL(myFile);
// 2. Compress with custom options
const result = await ImageCompressor.compress(dataUrl, {
quality: 0.6,
type: 'image/jpeg'
});
console.log('New Size:', ImageCompressor.formatSize(result.size));Convenience Methods
You can also use specific methods for different formats:
// JPEG (Defaults to 0.5 quality)
const jpeg = await ImageCompressor.getCompressedJpegFormat(dataUrl, 0.7);
// WebP (Modern browser support)
const webp = await ImageCompressor.getCompressedWebpFormat(dataUrl, 0.8);
// PNG (Lossless)
const png = await ImageCompressor.getCompressedPngFormat(dataUrl);
// GIF to Static (Captures 1st frame, returns high-quality JPEG)
const profilePic = await ImageCompressor.getStaticFrameFromGif(dataUrl, 0.8);Special Feature: Profile Picture "GIF" Handling
Since browsers cannot natively export/compress animated GIFs via Canvas, this library includes a "Best Trick" for profile pictures.
If you provide a GIF as input, the library will:
- Capture the first frame (the clearest static image).
- Compress it into a high-quality JPEG.
- This significantly reduces file size while maintaining a great look for profile avatars.
