Graphic Apps


5  /  83 Reviews
Jul 16, 2021 Last updated


Older Versions

# Change Log

**New features:

[gmic-qt-298] The API of G’MIC-Qt has been revamped and allows more flexibility for the host software. The stand-alone version has many new options 8 to control it from the command line, e.g. to allow batch processing.

[stdlib-298] Started the implementation of a machine learning library (new commands whoe names start with nn_*). Hopefully, this will enable ML-based image processing filters in G’MIC in the future.

[stdlib-298] New command meigen returns an approximation of the m largest eigenvalues of a (large) square matrix, using the Arnoldi iteration method. New math function meig() does the same, inside the math parser (included in math_lib).

[stdlib-298] New command arg2img splits specified list of arguments and return each as a new image (as a null-terminated string).

[math-core-298] New function fill() fills the content of a variable (particularly vector-valued) from a given expression, as in V = vector10(); fill(V,k,k^2 + k + 2); (3-arguments version), or fill(V,u(-1,1)) (2-arguments version).

[math-code-298] New function set(expr,'variable_name') sets the specified variable name with the value of expression expr (seen as a scalar value or a string).

[math-core-298] New function repeat() iterates over the content of a variable, as in V = vector10(); repeat(10,k,print(k^2)); (3-arguments version), or repeat(10,print(u)) (2-arguments version).

[math-core-298] New functions deg2rad() and rad2deg() in math parser, to convert angles in degree from/to radians.

[math-core-298] New postfix operator ° converts degrees to radians, as in cos(45°).

[math-core-298] New predefined constant value n which stands for the maximum number of threads an expression can use.

[core-298] When loading a .png or .tiff file, the bit depth of the input image is returned to the status.

[core-298] Added new ‘string prepend operator’ that can be used to update variables, as in str=foo str..=before_ that is equivalent to str=before_foo.

** Improvements / Modifications:

[stdlib-298] Command apply_curve: recoded to manage any kind of value ranges.

[math-core-298] Function store() is now able to store an input vector as an image of any size (it just pads with zeros in case the requested size is larger than the vector’s size).

[math-core-298] Improved JIT compiler to avoid unnecessary copy of memory blocks when initializing variables. As a result, complex math expressions requires less memory to be evaluated (and less bytecode instructions, so it’s slightly faster).

[math-core-298] Function rot() : angle argument must be specified in radians now (use new postfix operator ° to specify angles in degrees).

[math_core-298] Function _(comment) (that does nothing) can now be followed by a value, without requiring a ; separator.

[core-298] webp images with alpha-channels now load as 4-channels images into G’MIC (was keeping only RGB channels before).

[core-298] Optimized the storage of global variables. This greatly improves speed of commands that use a lot of global variables (e.g. parse_gui).

[core-298] Optimized the resizing of images (with command resize) when moving average interpolation is used (typically for image downsizing). It now uses a multi-threaded approach.

[core-298] Command text now accept an ‘empty’ string as a first argument.

[core-298] Commands convolve and correlate have been mostly recoded, leading to visible optimizations, particularly for large kernels (

+50% speed gain).

[web-298] Binary packages for ubuntu 21.04 ‘Hirsute’ are now available.

** Bug fixes:

[core-298] When forcing file format in input/output expressions, s.a. ext:filename, ext was not accepting numbers. This is fixed.

[core-298] Storage of image names in .gmz format could be wrong. Now fixed.

[core-298] Fix commands convolve and correlate when channel_mode==0 and when channel_mode==2 with small kernels (=5).

[math-core-298] Fixed bug about thread number t that could sometimes take value 0 for two different threads.

[stdlib-298] Fixed morph_rbf: old version of resize was used instead of resize_as_image.

[stdlib-298] Fixed help: when two commands had the same name, the help displayed for that command was not corresponding to the most prioritary command.


G'MIC (an acronym for GREYC's Magic for Image Computing) is a free, cross-platform, open-source framework for image processing.

G'MIC is also known as a powerful GIMP, Krita, and Paint.NET Plugin that allows you to add and make use of over 500 free extra filter effects. G'MIC enable you to use several user interfaces that you can use to manipulate, convert, filter, or visualize generic image datasets. If you would like to take a quick look to see what you can achieve with G'MIC, take a look at the "Image Gallery" and check the impressive amount of images.

According to G'MIC, official site user interfaces are:

1. gmic - a command-line tool that allows you to use the G'MIC image processing features from a shell.

2. libgmic - tiny, portable, thread-safe and multi-threaded, C++ image processing library to be linked to third-party applications. Its API allows programmers to add all G'MIC features in their software without many efforts.

3. G'MIC-Qt - a popular plugin that enables you to make use of G'MIC capabilities in other famous software such as GIMP, Krita, and Paint.NET. The plugin contains over 500 filters.

4. G'MIC Online - is a web service that allows you to upload an image from your computer and apply different filters - all in a web browser.

5. ZArt - a Qt-based interface for real-time processing of video streaming coming from webcams or video files. 


- according to the team: "focused on the design of possibly complex pipelines for converting, manipulating, filtering, and visualizing generic 1D/2D/3D multi-spectral image datasets."

- G'MIC contains a substantial set of pre-defined image processing algorithms and pipelines (more than 1000)

- multi-threaded native software

- cross-platform (it runs on Windows, macOS, UNIX)

- capable of processing many image types, including multi-spectral, 3d volumetric, 3d vector objects, and image sequences.

- image manipulations and interactions can be done grouped or only on certain items.

- efficient visualization modules for exploration/viewing of 2D/3D multi-spectral images, 3d vector objects or 1D graph plots

- highly customizable - users can design their image processing library


G'MIC has many use cases when it comes to image processing. The official site has an impressive amount of help (videos, wiki, image gallery, etc.) which is available under the "Resources" section. 

The fastest way to take a look over some of its capabilities (apart from visiting the "Image Gallery") would be to try the online web service. You can upload an image and play with the filters. 

Another option would be to download and install the G'MIC plugin for GIMP, Krita, or Paint.NET. This tip is available if you already use one of these image retouching and painting software and test the plugin. 

If you appreciate the incredible amount of special filter effects or you're being amazed by the framework, please consider a donation to G'MIC.

Found this software useful? Please consider a donation to the author.