On the road to 3.2

This is the changelog for the G’MIC software, until it reaches target version 3.2.

It lists all new features and changes done since the latest stable version 3.1.0.

What is G’MIC?

G’MIC (GREYC’s Magic for Image Computing) is a full-featured open-source framework for image processing. It provides several different user interfaces to convert/manipulate/filter/visualize generic image datasets, ranging from 1D scalar signals to 3D+t sequences of multi-spectral volumetric images, thus including 2D color images.

supportus



^ The plug-in G’MIC-Qt in action, running for GIMP 2.10 ^


From 3.1.2 to 3.1.3

New features:

  • [stdlib-313] New command eye inserts an identity matrix of specified size at the end of the image list.

  • [stdlib-313] New command identity inserts an identity map with specified dimensions at the end of the image list.

Improvements / Modifications:

  • [gmic_qt-313] Filter labels are now selectable and can be copy/pasted if necessary.

Bug fixes:

  • [core-313] Fix macro value of cimg_max_buf_size that causes crash on 32-bits arch.
  • [core-313] Command rotate: fix argument parsing bug, happening with 3D rotations, when last argument center_z has a % suffix.

From 3.1.1 to 3.1.2

Bug fixes:

  • [core-312] Fix bug in commands break and continue when executed in a loop that is the last code block of a command.

From 3.1.0 to 3.1.1

New features:

  • [gmic-qt-311] New filter Colors / Apply From CLUT Set allows to apply a CLUT on an image, from a compressed CLUT set stored as a custom .gmz file.

Improvements / Modifications:

Bug fixes:

  • [gmic-qt-311] Fix management of “Faves” file on Windows, when the account name contains accentuated characters.

  • [core-311] Fix possible misinterpretation by the interpreter of arithmetic expression like ‘str1’==‘str2’, when used with the := assignment operator (commit #4200a80aae83b53d1a6d0e950f47e49601842d76)

  • [core-311] Fix blocking mutex when using nested run() in mathematical expressions.

  • [core-311] Fix regression that happened in command input_flo between version 3.0.2 and 3.1.0 (wrong datatype name used).

Might want to add that blend has changed. Should we change the code on gmic-community with regard to blend?

blend has changed indeed. Old version was not accurate and even buggy in some cases (like blending a foreground wo/ alpha on top of a background w/ alpha).
The syntax of the new command is the same though, so changes shouldn’t be needed unless you were using blend in a way that exhibited the wrong behaviors.

Bonjour,

In the ‘new blend’ two modes are missing :

  • seamless
  • seamless_mixed

Fixed with: Command 'blend': Put back 'seamless' and 'seamless_mixed' modes. · dtschump/gmic@c05065d · GitHub

Merci :o)

Suggestion: Add new G’MIC-QT codes filters specifically for full-sized preview.

See gui_crop_preview , gui_resize_preview, gui_crop_resize_preview.

I was thinking of code[Global] and code[local], but I will see to that.

EDIT: Copying code[local], and then adding an asterisk works for me. Now, I can figure out how to do point-based crop.

And I figured it out:

 point_x,point_y:=cut([$1,$2],0,100)
 
 eval "
  points=[$point_x,$point_y]%;
  trim_out_width=min($_preview_width,w);
  trim_out_height=min($_preview_height,h);

  trimmed_width=w-trim_out_width;
  trimmed_height=h-trim_out_height;

  x0=int(trimmed_width*points[0]);
  y0=int(trimmed_height*points[1]);
  x1=x0+trim_out_width-1;
  y1=y0+trim_out_height-1;

  [x0,y0,x1,y1];"
  
  crop ${}

Hi, I used GMIC QT in krita and found a possible mistake. Amyspark said it was stipulated by GMIC internally, so I came here to give feedback.

The “HSV” mode of “channels to layers” can divide the layer into two parts, and use the “value” blending mode in krita for mixing. However, this result is different from the original figure. Instead, it is more correct to use “multiply”.
舒服垫 (artwork by 藤ちょこ)
Is this the wrong setting of blending mode or the wrong processing of channels? I remember that other software does not have “value” blending mode. Maybe just change the blending mode to “multiply”.

@TheTwo85737309 Welcome to the forum! Recently, there were changes to blend filters / commands that may improve things for you. I suggest you update G’MIC qt and then the filters so we can be on the same page.

Did you draw this image? If not, please give attribution.

I think the problem is related to the slight differences between how blending modes are implemented in the different hosts that support G’MIC-Qt.
When I’ve implemented this filter, I’ve tried it on GIMP and it gave the same kind of result with the “Value” mode, as implemented in GIMP then.

Anyway, I can still add a new option to HSV mode with the “Multiply” mode if needed.

I tested it in krita and gimp: most cases are the same, but krita changes saturation in some cases. This should be the reason why they are different. I think gimp is more correct. So I will also report to krita developers.

It may be more convenient to unify the blending mode of all softwares into “multiply”: otherwise, Photoshop, affinity photo and other software cannot find “value”
imagekrita
imagegimp

Looks like G’MIC ignores Alpha and for the most part it does. To my understanding Alpha is a big part of Krita but optional in GIMP.

I know this is pretty obscure request, but could it be possible to add a variable named 'color_restriction' to 'index', and what it does it attempt to limit to nearest colors of n size within palette?

See G’MIC exercise thread.

Two things to consider:

  • As you said, this looks like an “exotic” request, i.e. something that will be used only by you and maybe 1 or 2 other people in the whole G’MIC lifetime → this is not a good sign to ask for a feature integration in the G’MIC core :slight_smile:

  • Why not implementing it by yourself using the math parser ? This is totally doable as a custom command. For instance, a simplified version of index could be written as:

#@cli my_index : [palette]
my_index :
  pass$1 0
  foreach[^-1] {
    pass.
    [0],[0],[0],1,"
      RGB = I(#0);
      dR = crop(#1,0,0,0,0,w#1,1,1,1) - RGB[0];
      dG = crop(#1,0,0,0,1,w#1,1,1,1) - RGB[1];
      dB = crop(#1,0,0,0,2,w#1,1,1,1) - RGB[2];
      index = argmin(sqrt(dR^2 + dG^2 + dB^2));
    "
    k.
  }
  rm.

(it even runs in parallel).
Feel free to add whatever additional constraint you want on the computed index

Hello, I have one more thing. A dozen of us spent some time before making the Chinese translation of GMIC QT, which is roughly as shown in the figure below (Chinese + English). Can it be merged? In fact, my friend has submitted it before, but no one replied
Submission of Chinese translation documents by PTFish8 · Pull Request #127 · c-koi/gmic-qt (github.com)

2022/05/10: Release of version 3.1.1.

1 Like

New critical bug found tonight :frowning: Will release fix 3.1.2 tomorrow!

1 Like