Skip to content

bfactory-ai/zignal

Repository files navigation

Zignal

tests docs PyPI version

Zignal is a zero-dependency image processing library heavily inspired by the amazing dlib.

Status

Zignal is under active development and powers production workloads at Ameli. The API continues to evolve, so expect occasional breaking changes between minor releases.

Installation

Zig

zig fetch --save git+https://github.com/bfactory-ai/zignal

Then, in your build.zig

const zignal = b.dependency("zignal", .{ .target = target, .optimize = optimize });
// And assuming that your b.addExecutable `exe`:
exe.root_module.addImport("zignal", zignal.module("zignal"));
// If you're creating a `module` using b.createModule, then:
module.addImport("zignal", zignal.module("zignal"));

Examples | Documentation

Python

pip install zignal-processing

Requires Python 3.10+, no external dependencies

Bindings | PyPI Package | Documentation

Examples

Interactive demos showcasing Zignal's capabilities:

Features

  • PCA - Principal Component Analysis
  • Color spaces - RGB, HSL, HSV, Lab, XYZ, Oklab, Oklch conversions
  • Matrix operations - Linear algebra functions and SVD
  • Geometry - Points, rectangles, transforms, convex hull
  • Image I/O - Load and save PNG/JPEG images without in-house codecs
  • Image processing - Resize, rotate, crop, blur, sharpen, threshold, morphology
  • Canvas API - Lines, circles, polygons, Bézier curves with antialiasing
  • Fonts - Bitmap font rendering, BDF/PCF loading, and Unicode range filters
  • Compression - DEFLATE, zlib, gzip, and LZ77 bitstream primitives
  • Terminal graphics - Kitty and sixel with capability detection utilities
  • Optimization - Hungarian assignment solver for cost/profit matrices

Motivation

This library is used by Ameli for their makeup virtual try on.

Acknowledgements

First of all, this project would not have been possible without the existence of dlib. In fact, the first version of the virtual makeup try on was written in C++ with dlib and Emscripten. However, we decided to give Zig a go, even if that meant rewriting everything. As a result, we have no dependencies now.

Finally, B factory, Inc, which is my employer and graciously agreed to release this library to the public.



Star History Chart