Free / Trial / Professional

GemBox.Imaging library has four working modes:

Every working mode uses the same GemBox.Imaging.dll file and delivers the same performance and set of features, but all modes except Professional have some restrictions.

Before using any other member of GemBox.Imaging, you must call a ComponentInfo.SetLicense method to set the working mode.

Free

The default behavior of the Free mode is that a FreeLimitReachedException is thrown after loading or saving after three images, or for images larger than 2 megapixels (the equivalent of 1920x1080).

You can change this behavior to stop loading images by handling a ComponentInfo.FreeLimitReached event and setting FreeLimitEventArgs.FreeLimitReachedAction to Stop.

You can use the Free mode for any purpose, including use in commercial applications.

// Set license key to use GemBox.Imaging in a Free mode.
ComponentInfo.SetLicense("FREE-LIMITED-KEY");

// Stop loading an image when the free limit is reached.
ComponentInfo.FreeLimitReached += (sender, e) => e.FreeLimitReachedAction = FreeLimitReachedAction.Stop;
' Set license key to use GemBox.Imaging in a Free mode.
ComponentInfo.SetLicense("FREE-LIMITED-KEY")

' Stop loading an image when the free limit is reached.
AddHandler ComponentInfo.FreeLimitReached, Sub(sender, e) e.FreeLimitReachedAction = FreeLimitReachedAction.Stop

Trial

You can use the Trial mode to load images normally and save them with a watermark. Both Free and Trial modes use the same FREE-LIMITED-KEY key and can be used for an unlimited time period.

To set the mode to Trial, you need to handle a ComponentInfo.FreeLimitReached event and set FreeLimitEventArgs.FreeLimitReachedAction to ContinueAsTrial.

The limitation of the Trial mode is that when saving an image file, watermark will be added on top of the image.

// Set license key to use GemBox.Imaging in a Free mode.
ComponentInfo.SetLicense("FREE-LIMITED-KEY");

// Continue to use the component in a Trial mode when free limit is reached.
ComponentInfo.FreeLimitReached += (sender, e) => e.FreeLimitReachedAction = FreeLimitReachedAction.ContinueAsTrial;
' Set license key to use GemBox.Imaging in a Free mode.
ComponentInfo.SetLicense("FREE-LIMITED-KEY")

' Continue to use the component in a Trial mode when free limit is reached.
AddHandler ComponentInfo.FreeLimitReached, Sub(sender, e) e.FreeLimitReachedAction = FreeLimitReachedAction.ContinueAsTrial

Professional

To set the mode to Professional, you need to use a professional key which you can get by purchasing a license.

The Professional mode has no limitations, and the professional keys are perpetual (they can be used forever).

// Set license key to use GemBox.Imaging in a Professional mode.
ComponentInfo.SetLicense("XXXXXXXXXX");
Module Program
    Shared Sub Main(ByVal args() As String)
        ' Set license key to use GemBox.Imaging in a Professional mode.
        ComponentInfo.SetLicense("XXXXXXXXXX")
    End Sub
End Module

Important, every developer working on an application that uses the GemBox component in Professional mode, must be covered with a license. The professional keys are uniquely generated for each license and must be kept confidential.

For more information, please read the FAQ page and the product's EULA.

If you're working on an open-source project, please make sure that your license is not publicly accessible. One way to keep the professional key out of your source code is to bind your project's configuration to an external source that's not included in the project, like a secret file or environment variable.

Keeping your license key secret in .NET framework

First, install Microsoft.Configuration.ConfigurationBuilders.UserSecrets NuGet package. The package will modify the app.config file by adding a configuration builder with a specified userSecretsId value.

Second, create appSettings in the app.config file that uses the previously added configuration builder and has an empty license key.

<configuration>

    <configSections>
        <section name="configBuilders"
                 type="System.Configuration.ConfigurationBuildersSection,
                       System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
                 restartOnExternalChanges="false"
                 requirePermission="false" />
    </configSections>

    <configBuilders>
        <builders>
            <add name="Secrets"
                 userSecretsId="31c68e26-876c-43f5-8bb4-d87c9ec5f1ce"
                 type="Microsoft.Configuration.ConfigurationBuilders.UserSecretsConfigBuilder,
                       Microsoft.Configuration.ConfigurationBuilders.UserSecrets, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
        </builders>
    </configBuilders>

    <appSettings configBuilders="Secrets">
        <add key="GemBoxLicenseKey" value="" />
    </appSettings>

</configuration>

Third, add a secret file that has your professional key in the following location: %APPDATA%\Microsoft\UserSecrets\<userSecretsId>\secrets.xml

<root>
  <secrets ver="1.0">
    <secret name="GemBoxLicenseKey" value="XXXXXXXXXX" />
  </secrets>
</root>

Last, set the license key in your application.

using GemBox.Imaging;
using System.Configuration;

class Program
{
    static Program()
    {
        var license = ConfigurationManager.AppSettings["GemBoxLicenseKey"];
        ComponentInfo.SetLicense(license);
    }

    static void Main()
    {
        using (var image = Image.Load("FragonardReader.jpg"))
        {
            image.Save("FragonardReader.png");
        }
    }
}
Imports GemBox.Imaging
Imports System.Configuration

Module Program
    Shared Sub New()
        Dim license = ConfigurationManager.AppSettings("GemBoxLicenseKey")
        ComponentInfo.SetLicense(license)
    End Sub


    Sub Main()

        Using image As Image = Image.Load("FragonardReader.jpg")
            image.Save("FragonardReader.png")
        End Using
    End Sub
End Module

Keeping your license key secret in .NET Core

First, run the following commands in the terminal.

dotnet user-secrets init
dotnet user-secrets set GemBoxLicenseKey XXXXXXXXXX

As a result, the secret file that has your professional key will be generated in one of the following locations.

  • For Windows: %APPDATA%\Microsoft\UserSecrets\<UserSecretsId>\secrets.json
  • For Linux / macOS: ~/.microsoft/usersecrets/<UserSecretsId>/secrets.json
{
  "GemBoxLicenseKey": "XXXXXXXXXX"
}

Second, install the Microsoft.Extensions.Configuration.UserSecrets NuGet package.

Last, set the license key in your application.

using GemBox.Imaging;
using Microsoft.Extensions.Configuration;
using System.Linq;

class Program
{
    static Program()
    {
        var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
        var provider = config.Providers.First();

        provider.TryGet("GemBoxLicenseKey", out string license);
        ComponentInfo.SetLicense(license);
    }

    static void Main()
    {
        using (var image = Image.Load("FragonardReader.jpg"))
        {
            image.Save("FragonardReader.png");
        }
    }
}
Imports GemBox.Imaging
Imports Microsoft.Extensions.Configuration
Imports System.Linq

Module Program
    Shared Sub New()
        Dim config = (New ConfigurationBuilder()).AddUserSecrets(Of Program)().Build()
        Dim provider = config.Providers.First()

        Dim license As String
        provider.TryGet("GemBoxLicenseKey", license)
        ComponentInfo.SetLicense(license)
    End Sub


    Sub Main()

        Using image As Image = Image.Load("FragonardReader.jpg")
            image.Save("FragonardReader.png")
        End Using
    End Sub
End Module

Another way to store your professional key is to use an external secrets management service, such as Azure Key Vault, AWS Key Management Service, or Google Cloud Key Management Service.

See also


Next steps

GemBox.Imaging is a .NET component that provides an easy way to load, edit, save images. GemBox.Imaging also supports file format conversions and image transformations (resize, crop, rotate and flip).

Download Buy