/daffodil

A image processing library for D

Primary LanguageDMIT LicenseMIT

Daffodil

Build Status Coverage Status DUB Listing

A image processing library for D, inspired by Pillow.

Read the documentation here.

Goals

  • Simple, Extensible API
  • Controllable internals with suitable defaults
  • Wide format support with extensive testing
  • High performance
  • Support a variety of filters and transformations
  • Thread Safety (pending)

Example

import daffodil;
import daffodil.filter;
import daffodil.transform;

void main() {
    // daffodil allows you to choose what format pixels are stored with
    // defaults to `real` for when you don't care about memory usage.
    auto image = load!uint("daffodil.bmp");

    // concise filter usage, with a simple saving API
    image.gaussianBlurred(1.4)
         .save("blurry_daffodil.bmp");

    // easy transformations
    image.flip!"y";
    image.save("upside_down_daffodil.bmp");
}

Installing

Add daffodil as a dependency to your dub.json:

"dependencies": {
    "daffodil": "~>0.1.1"
}

Or fetch the package directly:

dub fetch daffodil

Development

Testing

Tests use the unit-threaded framework and can be run using:

dub test

Documentation

Documentation is written using the sphinx framework and a custom D domain/autodoc for sphinx (sphinxddoc).

To build the documentation, simply run:

make html