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
- 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
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();
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. | |
AdvancedCaptcha | Advanced work with multiple visual objects, randomization of their parameters and post-processing effects. | |
TwoLanguage | This example shows how to create a image with different fonts for rendering text in two languages. | |
WPF | This example shows how to create and display image in WPF project. |
ExNihilo is licensed under the Apache License, Version 2.0 The licenses of the used libraries can be found here