Skip to content

ExNihilo - modern, powerfull and flexible image creation library.

License

Notifications You must be signed in to change notification settings

Computr1x/ExNihilo

Repository files navigation

Build status Latest release NuGet License

This is an extremely powerful tool for creating procedural images from scratch. You can use it to generate captchas, datasets to train neural networks or unique game mechanics - in other words, for anything your imagination can do

Features

  • Multi-container system for processing visual entities without the need for complete redrawing
  • Full randomizability of all properties of all entities - from color and font size to the strength of the distortion/blur/any effects
  • A huge number of effects for post-processing images - from color correction and geometric distortion, to sharpness and pixelation modifiers
  • Ability to write code with confinient fluent interface and the classic object-oriented approach
  • Full cross-platform without being tied to any specific operating system

Getting started

For detailed illustrated code examples, we recommend you go to the Wiki section. However, here is a sample:

var fontFamily = new FontCollection()
    .AddSystemFonts()
    .GetByCulture(CultureInfo.CurrentCulture)
    .First();
    
Size containerSize = new(512, 256);

Container container = new(containerSize)
    .WithContainer(
        new Container(containerSize)
            .WithBackground(Color.White)
            .WithVisual(
                new Text()
                    .WithPoint(new Point(256,128))
                    .WithFontSize(100)
                    .WithRandomizedContent(content => {
                        content.WithLength(5);
                        content.WithCharactersSet(StringProperty.asciiUpperCase);
                    })
                    .WithRandomizedBrush(10)
                    .WithFontFamily(fontFamily)
                    .WithType(ExNihilo.Utils.VisualType.Filled)
            )
    );

new ImageSaver(
    new ImageGenerator(container)
        .WithSeedsCount(3)
        .Generate())
.WithOutputPath("./")
.CreateFolder("Results")
.Save();

Example projects

You can always find several test projects with detailed code explanations in a directory /examples:

Project Description Result
Simple The example shows basic container operations such as working with containers, text, generating and saving an image. 1_GCMUR
AdvancedCaptcha Advanced work with multiple visual objects, randomization of their parameters and post-processing effects. 3_SZCRR
TwoLanguage This example shows how to create a image with different fonts for rendering text in two languages. 0_TOFOX
WPF This example shows how to create and display image in WPF project. wpf

License

ExNihilo is licensed under the Apache License, Version 2.0 The licenses of the used libraries can be found here