daffodil, a D image processing library

Benjamin Schaaf via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Thu Jun 30 14:35:37 PDT 2016


daffodil is a image processing library inspired by python's 
Pillow (https://pillow.readthedocs.org/). It is an attempt at 
designing a clean, extensible and transparent API.

https://github.com/BenjaminSchaaf/daffodil
https://benjaminschaaf.github.io/daffodil/

The library makes full use out of D's templates and 
metaprogramming. The internal storage mechanism is entirely 
configurable from almost every endpoint. File headers are 
directly loaded into structs defining them, removing most of the 
difficulties in reading them according to spec. The image type 
and loading API is entirely extensible, making extra image 
formats entirely self-contained.

Currently only loading and saving of simple BMP images is 
supported, with convolution and Gaussian Blur filters and flip 
transformations. Its still early in development, but I'd love to 
get some feedback on it.

Example:
---
import daffodil;
import daffodil.filter;
import daffodil.transform;

void main() {
     auto image = load!32("daffodil.bmp");

     image.gaussianBlurred(1.4).save("blurry_daffodil.bmp");

     image.flipped!"y".save("upside_down_daffodil.bmp");
}
---

The license is MIT, so feel free to do whatever you want with the 
code. Issues and pull requests are of course welcome ;)

Alongside I've also written (an admittedly hacky) sphinx 
(http://www.sphinx-doc.org/en/stable/) extension that provides a 
domain and autodocumenter for D, using libdparse and pyd.



More information about the Digitalmars-d-announce mailing list