How to Make Stencil?

An image stencil is a simplified outline or template created from an image and typically used for artistic purposes such as drawing or graffiti. This process involves converting the details of an image into basic shapes and lines that can be easily traced or reproduced. Aspose.SVG for Python via .NET allows you to create an image stencil programmatically or using an online Stencil Maker. Here, you can vectorize an image and apply stenciling techniques online or using Python.


Image Stencil Maker

Image Stencil Maker supports JPEG, JPG, PJP, PJPEG, PNG, BMP, ICO, GIF, TIFF, SVG, and other image formats. It uses color quantization algorithms to reduce the color numbers in your image, converts the image to SVG, and creates stencil art online. Use our free Stencil Maker to create stunning stencil art effortlessly!



Image stenciling transforms an ordinary picture or photo into an outline image, perfect for creating stencil art with graffiti-like effects. Here are the basic steps to turn a photo or image into a stencil:

  1. Convert image to grayscale (optional). You can convert the image to grayscale or reduce the number of colors to quantize it.
  2. Quantize image colors. This step simplifies the image by reducing its color palette. After quantizing, you can download or vectorize the result to obtain the stencil’s outline.
  3. Drawing Stencils. There are three options for drawing stencils:
    • None – all vectorized shapes are filled.
    • Auto – shapes are not filled, and the borders retain the original color.
    • MonoColor – Shapes are not filled, and the borders are in a predefined color.

Once the image stencil has been created, the vectorized image can be exported as an SVG file and used as a template for the stencil effect.



Image Stencil in Python

Aspose.SVG for Python via .NET API provides classes and methods that allow you to implement the process of vectorizing images and work with various options for pre-processing images before saving them in SVG vector format. Along with controlling vectorization parameters such as trace_smoother, error_threshold, max_iterations, path_builder, etc., you can also configure the drawing of the image stencil.

In the following code example, we convert an image to a vector and apply stenciling technique to make stencil:


Make Stencil in Python

import os
from aspose.svg import *
from aspose.svg.drawing import *
from aspose.svg.rendering.image import *
from aspose.svg.imagevectorization import *

# Setup directories
input_folder = "data/"
output_folder = "output/"
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# Configuration for image vectorization
path_builder = BezierPathBuilder()
path_builder.trace_smoother = ImageTraceSmoother(1)
path_builder.error_threshold = 30.0
path_builder.max_iterations = 30

vectorizer = ImageVectorizer()
vectorizer.configuration.path_builder = path_builder
vectorizer.configuration.colors_limit = 10
vectorizer.configuration.line_width = 1.0

# Configuration for image stencil
stencil_config = StencilConfiguration()
stencil_config.type = StencilType.MONO_COLOR
stencil_config.color = Color.from_rgb(0, 0, 255)
vectorizer.configuration.stencil = stencil_config

# Vectorize an image
src_file = "image.png"
with vectorizer.vectorize(os.path.join(input_folder, src_file)) as document:
    output_file = os.path.join(output_folder, "image-stencil.svg")
    document.save(output_file)


Steps to Make Stencil in Python

To vectorize an image and make stencil with Aspose.SVG Python library, you should follow a few steps:

  1. Import the necessary modules and classes from the aspose.svg, aspose.svg.imagevectorization, and other necessary packages.
  2. Create an instance of the BezierPathBuilder class to define the path-building strategy.
    • Set the value for the trace_smoother property using an instance of ImageTraceSmoother . This parameter (severity) controls how much the traced paths will be smoothed.
    • Set the value for the error_threshold property of BezierPathBuilder. This parameter defines the acceptable error margin for approximating the bitmap shapes with vector paths.
    • Specify the value for the max_iterations property of the BezierPathBuilder object. This setting determines the maximum number of iterations allowed for the path optimization algorithm during vectorization, which is how many times the algorithm will attempt to improve the path accuracy.
  3. Create an instance of the ImageVectorizer class. The ImageVectorizer is the main class used to convert images to vector graphics.
    • Assign the path_builder configuration (defined earlier) to the vectorizer object. This means the vectorizer will use the settings specified in the path_builder for path creation and optimization.
    • Set the colors_limit property of the ImageVectorizerConfiguration class. This parameter determines the maximum number of colors that will be used in the vectorized image. This affects how the vectorizer handles color simplification and reduces the number of unique colors in the output.
    • Specify the line_width property of the ImageVectorizerConfiguration class. This setting determines the width of the vector paths in the resulting SVG file.
  4. Initialize a new instance of the StencilConfiguration class, which holds the settings for the stencil creation process.
    • Set the stencil type property to MONO_COLOR. This will create a stencil with a single, uniform color for the outline.
    • Set the color property for the stencil outline. The Color.from_rgb(0, 0, 255) method creates a color object representing the color blue using RGB values (red: 0, green: 0, blue: 255).
    • Apply the stencil configuration to the vectorizer.
  5. Use the vectorize() method to vectorize an image from the specified file.
  6. Save the vectorized image as an SVG file using the save() method on the resulting SVGDocument.

Aspose.SVG offers a Free Online Image Vectorizer that allows you to convert JPG, PNG, BMP, TIFF, ICO, and GIF bitmap images into vector graphics. With this application, you can apply various options to achieve the perfect result. Save time and experience the benefits of vector graphics by trying out this Image Vectorizer today!


FAQ

1. How can I vectorize Image?

Aspose.SVG allows you to convert Image to SVG in any way – online or programmatically. For example, you can vectorize Image in real-time using Online Image Vectorizer that converts your images quickly and with high quality. On other hand, you can use Aspose.SVG to vectorize Image programmatically.

2. What is a raster to vector conversion?

The process of image conversion from raster to vector is called image vectorization. It is a complex computational process that converts a bitmap image made up of pixels into a vector image made up of lines, curves, and other geometric shapes.

3. What is the image vectorization for?

Vector images are essential for any professional who works with drawings, graphics, or sketches. Many designers, printers, architects, and artists often choose to work with sketches or drawings as vector images. And they have good reasons! Unlike bitmap graphics, vector arts are resizable and scalable without losing any quality, and they will still display just as clearly. Also, vectorization can be used to update or recover images.
Vector images are what you need to produce banners, logos, maps, signs, embroideries, engravings, graphs, blueprints, etc.

4. How is the vectorization occur?

The vectorization process uses color image quantization – a technique that reduces the number of different colors used in an image, intending that the new image should be as visually similar as possible to the original one. Then, the Vectorizer replaces all the same colored spots or pixels with geometric shapes or curves using a set of contour tracing algorithms. The final step is to convert the tracing points to SVG path lines and Bezier curves and add them to the SVG document.



Get Started with Python API

If you want to develop scalable vector graphics and their applications, install our flexible, high-speed Aspose.SVG for Python via .NET API. pip is the easiest way to download and install Aspose.SVG for Python via .NET API. To do this, run the following command:

pip install aspose-svg-net

For more details about Python library installation and system requirements, please refer to Aspose.SVG Documentation.

Other Supported Image Vectorizers

JPG to SVG (JPEG Image)
PNG to SVG (Portable Network Graphics)
Image to SVG (Raster Image)
BMP to SVG (Microsoft Windows Bitmap)
Image Stencil (Stencil Maker)