ExNihilo 1.0.4

dotnet add package ExNihilo --version 1.0.4
NuGet\Install-Package ExNihilo -Version 1.0.4
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ExNihilo" Version="1.0.4" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ExNihilo --version 1.0.4
#r "nuget: ExNihilo, 1.0.4"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install ExNihilo as a Cake Addin
#addin nuget:?package=ExNihilo&version=1.0.4

// Install ExNihilo as a Cake Tool
#tool nuget:?package=ExNihilo&version=1.0.4

<img src="https://user-images.githubusercontent.com/11760002/184577160-674d9764-0022-4194-b4e9-d07b9103dcf5.png">

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

Product Compatible and additional computed target framework versions.
.NET net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.4 105 1/19/2024
1.0.3 164 11/29/2023
1.0.0-alpha 106 10/10/2022