pixer 0.0.5 copy "pixer: ^0.0.5" to clipboard
pixer: ^0.0.5 copied to clipboard

A fast image processing package.

Pixer #

Fast, cross-platform image manipulation for Dart, powered by Rust via FFI.

Installation #

dependencies:
  pixer: ^0.0.5

Native binaries are downloaded automatically via Dart build hooks.

Quick Start #

import 'package:pixer/pixer.dart';

final image = Pixer.fromFile('input.jpg');
final result = image.resize(800, 600);
result.saveToFile('output.png');
result.dispose();
image.dispose();

Loading Images #

// From file (format auto-detected)
final image = Pixer.fromFile('photo.jpg');

// From memory
final bytes = await File('photo.png').readAsBytes();
final image = Pixer.fromMemory(bytes);

// From memory with explicit format
final image = Pixer.fromMemoryWithFormat(bytes, ImageFormatEnum.Png);

Supported Formats #

PNG, JPEG, GIF, WebP, BMP, ICO, TIFF

Image Operations #

All operations return a new Pixer instance; the original is unchanged.

// Resize (maintains aspect ratio)
final resized = image.resize(800, 600);

// Resize exact (may distort)
final stretched = image.resizeExact(800, 600);

// Crop (x, y, width, height)
final cropped = image.crop(100, 100, 400, 300);

// Rotate
final r90 = image.rotate90();
final r180 = image.rotate180();
final r270 = image.rotate270();

// Flip
final hFlip = image.flipHorizontal();
final vFlip = image.flipVertical();

// Adjustments
final blurred = image.blur(2.5);           // Gaussian blur (sigma)
final bright = image.brightness(30);       // Add to brightness (-255 to 255)
final contrast = image.contrast(1.2);      // Contrast factor (1.0 = unchanged)
final gray = image.grayscale();
final inverted = image.invert();

Resize Filters #

image.resize(800, 600, filter: FilterTypeEnum.Lanczos3);  // Default, high quality
image.resize(800, 600, filter: FilterTypeEnum.Nearest);   // Fastest, pixelated
image.resize(800, 600, filter: FilterTypeEnum.Triangle);  // Bilinear
image.resize(800, 600, filter: FilterTypeEnum.CatmullRom);
image.resize(800, 600, filter: FilterTypeEnum.Gaussian);

Saving & Encoding #

// Save to file (format from extension)
image.saveToFile('output.webp');

// Encode to bytes
final pngBytes = image.encode(const PixerPngEncoder());
final jpegBytes = image.encode(PixerJpegEncoder(quality: 90));

Metadata #

final meta = image.getMetadata();
print('${meta.width}x${meta.height}, ${meta.colorType}');

// Or directly:
print('${image.width}x${image.height}');

Resource Management #

Call dispose() when done to free native memory. A finalizer provides a safety net, but explicit disposal is recommended.

final image = Pixer.fromFile('input.jpg');
try {
  // use image...
} finally {
  image.dispose();
}

Error Handling #

All errors throw typed PixerException subclasses:

Exception Cause
InvalidPathException Empty or invalid file path
IoException File read/write failure
DecodingException Cannot decode image data
EncodingException Cannot encode to format
UnsupportedFormatException Format not supported
InvalidDimensionsException Invalid width/height/crop bounds
InvalidPointerException Image already disposed

Platforms #

Linux, macOS, Windows, Android, iOS

Roadmap #

Current (v0.0.x) #

  • ✅ Load/save: PNG, JPEG, GIF, WebP, BMP, ICO, TIFF
  • ✅ Resize (aspect-ratio-preserving & exact) with 5 filter types
  • ✅ Crop, rotate (90/180/270), flip (H/V)
  • ✅ Adjustments: blur, brightness, contrast, grayscale, invert
  • ✅ Metadata access (width, height, color type)
  • ✅ Encoder objects with JPEG quality support
  • ✅ Full platform support (Linux, macOS, Windows, Android, iOS)

Planned — image crate #

  • ❌ Additional encoding options (PNG compression level, progressive JPEG, etc.)
  • ❌ Hue rotation
  • ❌ Sharpen / unsharp mask
  • ❌ Thumbnail generation (optimized fast path)
  • ❌ Create blank images (solid color, transparent)
  • ❌ Composite images (overlay one image onto another at x, y)
  • ❌ Tiling
  • ❌ Animated GIF/WebP frame-level control
  • ❌ Batch processing API

Planned — requires imageproc #

  • ❌ Arbitrary angle rotation
  • ❌ Blend modes (multiply, screen, overlay, etc.)
  • ❌ Draw primitives (rectangles, circles, lines)
  • ❌ Text rendering onto images
  • ❌ Edge detection (Canny, Sobel)
  • ❌ Content-aware resize (seam carving)

Planned — requires other crates #

  • ❌ EXIF metadata read/write/preserve (e.g. kamadak-exif)
  • ❌ Stitch images (horizontal/vertical concat, grid layout)
  • ❌ Watermarking

Exploring #

  • ❌ Advanced color adjustments (saturation, gamma, curves)
  • ❌ GPU acceleration
42
likes
0
points
262
downloads

Publisher

verified publisherlazebny.io

Weekly Downloads

A fast image processing package.

License

unknown (license)

Dependencies

code_assets, crypto, ffi, hooks, native_toolchain_rs

More

Packages that depend on pixer