greyclab / gmic Goto Github PK
View Code? Open in Web Editor NEWGREYC's Magic for Image Computing: A Full-Featured Open-Source Framework for Image Processing
License: Other
GREYC's Magic for Image Computing: A Full-Featured Open-Source Framework for Image Processing
License: Other
I think G'MIC should detect whether the last one is using arg... or not instead of having it as the only argument. To explain, here's a code:
Current implementation
foo:
status {"
generate_random_numbers_with_exclusion(input...)=(
ref([input],v_inp);
s_in=size(v_inp);
if(s_in<=3,run('error inv_inp'););
number_of_exclusion=s_in-2;
si=v_inp[0]; # start_index
ei=v_inp[1]; # start_end
do(
rn=int(u(si,ei,1,0));
for(p=2,p<s_in,++p,
if(rn<v_inp[p],break(););
++rn;
);
,rn>=ei);
rn;
);
generate_random_numbers_with_exclusion($*);
"}
With suggestion
foo:
status {"
generate_random_numbers_with_exclusion(start_index,end_index,arg...)=(
ref([arg],v_inp);
do(
rn=int(u(start_index,end_index,1,0));
repeat(size(v_inp),p,
if(rn<v_inp[p],break(););
++rn;
);
,rn>=end_index);
rn;
);
generate_random_numbers_with_exclusion($*);
"}
Which is easier to understand? The second one. And it's shorter, easier to format too.
Hi
Just to report an error message with the filter Morph [Interactive] :
*** Error in ./fx_morph_interactive/x_morph/*repeat/*local/*substitute/max_wh/_minmax_whds/ *** Item substitution '{ mw = w; mh = h; md = d; ms = (...)s#k); ); ([mw,mh,md,ms])[0,2]}': Unrecognized function call 'repeat( l,k, mw = max(mw,w#k); mh = max(mh,h#k); md = max(m(...)' in expression '...repeat( l,k, mw = max(mw,w#k); mh = max(mh,h#k); md = max(m(...)...'.
I use the last version 3.3.0 of "Ubuntu 22.04 Jammy: Plug-in for GIMP 2.10" with GIMP 2.10.30 on ... Ubuntu 23.04 ... maybe is it the cause of the issue? (But many other filters work anyway)
If it is just because of the Ubuntu version, sorry! But if not, I hope my report could be helpful.
Thanks!
Warp Plugin [Interactive] in version 2.2.3 works fine in Photoshop, in the new version 3.2.4 it is very slow in applying changes to the image. The program keeps calculating the process for several minutes for an adjustment that in version 2.23 is done in a few seconds.
Photoshop v23
GmicPlugin_x64 (version that works for me)
This would be useful when importing .gmic script. Just before the End G'MIC interpreter you can make G'MIC execute __main__
or whatever you want to call to execute from the imported G'MIC script.
EDIT: Easiest way seems to be checking if command cli_end exists and to execute it right at the beginning of _display if it does.
EDIT 2: Just as I mentioned in the forum, basically all that is needed for this to happen is inserting if ['$$cli_end']!=0 cli_end fi
under _display right at the very beginning, and there you have a easy way to allow optional cli_end command.
G'MIC asks which Ubuntu. I don't know, I didn't build this box. Also, I need to upgrade my present G'MIC in my GIMP. I have no clues...
I been working on combinatorics tools recently, and there are things like this:
axis==2?(
axis()=z;
):
axis==1?(
axis()=y;
):(
axis()=x;
);
In conjunction to this example:
num_of_combinations,axis={permut($2,$1,1)},{_'$3'-_'x'}
So, to simplify this problem, one should have the option to have p. If the end output is a vector, then p would be based on the x,y,z position, otherwise, x,y,z,c.
I would like to have a mixture of import_text and import_glob. Basically, import every files within folder as if it was imported one by one with it command. I think G'MIC is useful for even non-image simple files, hence my asking.
Another idea is to have a option for it command to import all files within current directory. Best approach is to '*' as a possible argument which implies every files within current directory is to be imported. This can also be extended to other input commands I think.
However, I can do this manually with exec to find all the file names within current directory, and use it command, process them with my command, and export them back. As a matter of fact, I pushed a command on gmic-community to aid on that.
It's not the most wanted feature request, and workarounds do exist, but I'll leave this idea to you anyway.
I've been messing around with the continuous droste effect and have been having repeated issues, both with the GUI for the photoshop plugin and the CLI.
Here is an example of a command I'd run, where the droste component of the command comes from copying directly from the Photoshop plugin GUI after resetting to defaults parameters:
gmic -input 1000.png -souphead_droste10 40,100,1,1,1,0,0,0,0,0,1,10,1,0,90,0,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0 -output output-1000.png
Extremely often, but not quite consistently, it fails like this, for no apparent reason, it just stops:
The verbose output seems to suggest it stops at a particular fill command. I'll paste a debug output at the end:
What's strange is that at one point, using the same command, it started working if the size of the image was smaller enough (roughly 1000x1000 or less), but now it doesn't again. I've also tried this in a virtual machine and it does the same thing. And it also does it with both version 3.3.5 and 3.3.6, and with both update335.gmic and update336.gmic, which I tested by specifying the exact filter file version:
The same thing appears to happen in the photoshop version though, and this one at least gives some kind of error message. In this case, the error occurs immediately when clicking on the Continuous Droste effect, or if the effect was already selected (and therefore it tries to open that immediately), the error occurs immediately after trying to open the plugin:
The error 0xc000008f means "Floating-point inexact result". (Technically it could also mean "The system cannot join or substitute a drive to or for a directory on the same drive" but I think the other meaning is more likely).
The reason I noticed image size might be a contributing factor (but not the only factor) is that for a while it worked in the photoshop GUI when I was trying to do the effect on a very large image (6000x6000) and the effect preview window was able to show the effect being done. But if I tried to hit "apply", it would crash, and if I expanded the GUI preview window too large (as to expand the preview image size) it would also crash. Therefore I tried downsizing the image and then it worked in the CLI where it wouldn't before with the large version. But again, now for some reason it won't even work with those same exact smaller images.
Windows Event Viewer log shows that it is indeed the same crash whether in the GUI or CLI, as you can see the "Exception Code" is the same one that is shown in the window of the GUI when it crashes:
What's more concerning is if I try to run the command via the CLI too many times in succession, it causes a BSOD. And by this I mean, the command fails and gmic.exe exits, and the terminal window shows the C:\whatever> prompt again, and if I do that too many times in a row too quickly, it BSODs. After it happened the first time, I tried the same thing again to see if it was a fluke, but it happened again. See the event viewer log below showing the crashes (these events don't have info about the cause). The actual stop code for both BSODs was 0000007E
aka SYSTEM_THREAD_EXCEPTION_NOT_HANDLED
.
More strange behavior - I just tried to replicate the BSOD issue in a virtual machine, and while it didn't seem to cause it, it demonstrated the weird inconsistency I was talking about. Here you can see the same command ran back-to-back 5 times and failing each time, but randomly working on the 6th time (see that it actually got to the "output image" stage):
Here's a full debug example:
C:\Users\Joe\Downloads\gmic_3.3.5_cli_win64>gmic -debug -input 1000.png -souphead_droste10 40,100,1,1,1,0,0,0,0,0,1,10,1,0,90,0,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0 -output output-1000.png
[gmic]./ Start G'MIC interpreter (v.3.3.5, debug mode).
<gmic>./ Initial command line: 'cli_start , -debug -input 1000.png -souphead_droste10 40,100,1,1,1,0,0,0,0,0,1,10,1,0,90,0,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0 -output output-1000.png'.
<gmic>./ Enter scope './'.
<gmic>./ Item[0]: 'cli_start', selection [].
<gmic>./ Found custom command 'cli_start: ' (takes no arguments).
<gmic>./ Expand command line for command 'cli_start' to: ''.
<gmic>./cli_start/ Return from empty command 'cli_start/'.
<gmic>./ Item[2]: '-debug' -> 'debug', selection [].
<gmic>./ Item[3]: '-input' -> 'input', selection [].
<gmic>./ Command 'input': arguments = '1000.png'.
[gmic]./ Input file '1000.png' at position 0 (1 image 1000x1000x1x3).
<gmic>./ Item[5]: '-souphead_droste10' -> 'souphead_droste10', selection [0].
<gmic>./ Found custom command 'souphead_droste10: _souphead_droste10 ${1-26},0,${28-31}' (takes arguments).
<gmic>./ Command 'souphead_droste10': arguments = '40,100,1,1,1,0,0,0,0,0,1,10,1,0,90,0,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0'.
<gmic>./ Found 31 given arguments for command 'souphead_droste10':
<gmic>./ $1 = '40'
<gmic>./ $2 = '100'
<gmic>./ $3 = '1'
<gmic>./ $4 = '1'
<gmic>./ $5 = '1'
<gmic>./ $6 = '0'
<gmic>./ $7 = '0'
<gmic>./ $8 = '0'
<gmic>./ $9 = '0'
<gmic>./ $10 = '0'
<gmic>./ $11 = '1'
<gmic>./ $12 = '10'
<gmic>./ $13 = '1'
<gmic>./ $14 = '0'
<gmic>./ $15 = '90'
<gmic>./ $16 = '0'
<gmic>./ $17 = '0'
<gmic>./ $18 = '0'
<gmic>./ $19 = '0'
<gmic>./ $20 = '1'
<gmic>./ $21 = '0'
<gmic>./ $22 = '0'
<gmic>./ $23 = '1'
<gmic>./ $24 = '0'
<gmic>./ $25 = '0'
<gmic>./ $26 = '0'
<gmic>./ $27 = '0'
<gmic>./ $28 = '0'
<gmic>./ $29 = '1'
<gmic>./ $30 = '0'
<gmic>./ $31 = '0'
<gmic>./ Expand command line for command 'souphead_droste10' to: ' _souphead_droste10 40,100,1,1,1,0,0,0,0,0,1,10,1,0,90,0,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0'.
<gmic>./ Decompose command line into 2 items:
<gmic>./ item[0] = '_souphead_droste10'
<gmic>./ item[1] = '40,100,1,1,1,0,0,0,0,0,1,10,1,0,90,0,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0'
<gmic>./souphead_droste10/ Enter scope 'souphead_droste10/'.
<gmic>./souphead_droste10/ Item[0]: '_souphead_droste10', selection [0].
<gmic>./souphead_droste10/ Found custom command '_souphead_droste10: repeat $! l[$>] to_a +f. 0 sh. 0 f. "* begin(InnerRadius = $1; OuterRadius = $2; Periodicity = $3; Strands = $4; Zoom = $5; Rot(...),ColorOutA=1); i(#1,x,y,0,1)=ColorOutG*255; i(#1,x,y,0,2)=ColorOutB*255; i(#1,x,y,0,3)=ColorOutA*255; ColorOutR*255" k.. done done' (takes arguments).
<gmic>./souphead_droste10/ Command '_souphead_droste10': arguments = '40,100,1,1,1,0,0,0,0,0,1,10,1,0,90,0,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0'.
<gmic>./souphead_droste10/ Found 31 given arguments for command '_souphead_droste10':
<gmic>./souphead_droste10/ $1 = '40'
<gmic>./souphead_droste10/ $2 = '100'
<gmic>./souphead_droste10/ $3 = '1'
<gmic>./souphead_droste10/ $4 = '1'
<gmic>./souphead_droste10/ $5 = '1'
<gmic>./souphead_droste10/ $6 = '0'
<gmic>./souphead_droste10/ $7 = '0'
<gmic>./souphead_droste10/ $8 = '0'
<gmic>./souphead_droste10/ $9 = '0'
<gmic>./souphead_droste10/ $10 = '0'
<gmic>./souphead_droste10/ $11 = '1'
<gmic>./souphead_droste10/ $12 = '10'
<gmic>./souphead_droste10/ $13 = '1'
<gmic>./souphead_droste10/ $14 = '0'
<gmic>./souphead_droste10/ $15 = '90'
<gmic>./souphead_droste10/ $16 = '0'
<gmic>./souphead_droste10/ $17 = '0'
<gmic>./souphead_droste10/ $18 = '0'
<gmic>./souphead_droste10/ $19 = '0'
<gmic>./souphead_droste10/ $20 = '1'
<gmic>./souphead_droste10/ $21 = '0'
<gmic>./souphead_droste10/ $22 = '0'
<gmic>./souphead_droste10/ $23 = '1'
<gmic>./souphead_droste10/ $24 = '0'
<gmic>./souphead_droste10/ $25 = '0'
<gmic>./souphead_droste10/ $26 = '0'
<gmic>./souphead_droste10/ $27 = '0'
<gmic>./souphead_droste10/ $28 = '0'
<gmic>./souphead_droste10/ $29 = '1'
<gmic>./souphead_droste10/ $30 = '0'
<gmic>./souphead_droste10/ $31 = '0'
<gmic>./souphead_droste10/ Expand command line for command '_souphead_droste10' to: ' repeat $! l[$>] to_a +f. 0 sh. 0 f. "* begin(InnerRadius = 40; OuterRadius = 100; Periodicity = 1; Strands = 1; Zoom = 1; Rotat(...),ColorOutA=1); i(#1,x,y,0,1)=ColorOutG*255; i(#1,x,y,0,2)=ColorOutB*255; i(#1,x,y,0,3)=ColorOutA*255; ColorOutR*255" k.. done done'.
<gmic>./souphead_droste10/ Decompose command line into 13 items:
<gmic>./souphead_droste10/ item[0] = 'repeat'
<gmic>./souphead_droste10/ item[1] = '$!'
<gmic>./souphead_droste10/ item[2] = 'l[$>]'
<gmic>./souphead_droste10/ item[3] = 'to_a'
<gmic>./souphead_droste10/ item[4] = '+f.'
<gmic>./souphead_droste10/ item[5] = '0'
<gmic>./souphead_droste10/ item[6] = 'sh.'
<gmic>./souphead_droste10/ item[7] = '0'
<gmic>./souphead_droste10/ item[8] = 'f.'
<gmic>./souphead_droste10/ item[9] = '* begin(InnerRadius = 40; OuterRadius = 100; Periodicity = 1; Strands = 1; Zoom = 1; Rotate = 0; XShift = 0; YShift = 0; XCenterShift = 0; YCenterShift = 0; StartingLevel = 1; NumberOfLevels = 10; LevelFrequency = 1; ShowBothPoles = 0; PoleRotation = 90; PoleLong = 0; PoleLat = 0; TilePoles = 0; HyperDroste = 0; FractalPoints = 1; AutoSetPeriodicity = 0; NoTransparency = 0; ExternalTransparency = 1; MirrorEffect = 0; Untwist = 0; DoNotFlattenTransparency = 0; ShowGrid = 0; ShowFrame = 0; Antialias = 1; XEdgeType = 0; YEdgeType = 0; r1 = InnerRadius/100; r2 = OuterRadius/100; p1 = Periodicity; p2 = Strands; xCenterShift = XCenterShift/100; yCenterShift = YCenterShift/100; W = (w-1)/2; H = (h-1)/2; xShift = (XShift*w/W)/100; yShift = (YShift*h/H)/100; tileBasedOnTransparency=!(NoTransparency); transparentPointsIn=!(ExternalTransparency); levelsToLookOut=StartingLevel; levelToShow=LevelFrequency; retwist=!(Untwist); if (AutoSetPeriodicity\,p1=p2/2*(1+sqrt(1-(log(r2/r1)/pi)^2))); if (p1>0\,rotat(...)
<gmic>./souphead_droste10/ item[10] = 'k..'
<gmic>./souphead_droste10/ item[11] = 'done'
<gmic>./souphead_droste10/ item[12] = 'done'
<gmic>./souphead_droste10/_souphead_droste10/ Enter scope '_souphead_droste10/'.
<gmic>./souphead_droste10/_souphead_droste10/ Item[0]: 'repeat', selection [0].
<gmic>./souphead_droste10/_souphead_droste10/ Command 'repeat': arguments = '$!' -> '1'.
[gmic]./souphead_droste10/_souphead_droste10/*repeat/ Start 'repeat...done' block (1 iteration).
<gmic>./souphead_droste10/_souphead_droste10/*repeat/ Item[2]: 'l[$>]' -> 'l[0]', selection [0].
[gmic]./souphead_droste10/_souphead_droste10/*repeat/*local/ Start 'local...done' block, with image [0].
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ Enter scope '*local/'.
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ Item[3]: 'to_a', selection [0].
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ Found custom command 'to_a: e[^-1] "Force image$? to have an alpha channel." foreach { if !s||s>4 error[0--5] "Command '$0': Image ["$>"] is not a G,GA,RGB or RGBA image ("{s}" channels)." elif s==1||s==3 channels 0,{s} sh. {s-1} f. 255 rm. fi }' (takes no arguments).
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ Expand command line for command 'to_a' to: ' e[^-1] "Force image$? to have an alpha channel." foreach { if !s||s>4 error[0--5] "Command 'to_a': Image ["$>"] is not a G,GA,RGB or RGBA image ("{s}" channels)." elif s==1||s==3 channels 0,{s} sh. {s-1} f. 255 rm. fi }'.
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ Decompose command line into 19 items:
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ item[0] = 'e[^-1]'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ item[1] = 'Force image$? to have an alpha channel.'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ item[2] = 'foreach'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ item[3] = '{'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ item[4] = 'if'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ item[5] = '!s||s>4'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ item[6] = 'error[0--5]'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ item[7] = 'Command 'to_a': Image [$>] is not a G\,GA\,RGB or RGBA image ({s} channels).'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ item[8] = 'elif'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ item[9] = 's==1||s==3'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ item[10] = 'channels'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ item[11] = '0,{s}'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ item[12] = 'sh.'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ item[13] = '{s-1}'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ item[14] = 'f.'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ item[15] = '255'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ item[16] = 'rm.'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ item[17] = 'fi'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ item[18] = '}'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/ Enter scope 'to_a/'.
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/ Item[0]: 'e[^-1]', selections [0,1,2,3,4].
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/ Command 'echo': arguments = 'Force image$? to have an alpha channel.' -> 'Force image [0] to have an alpha channel.'.
[gmic]./souphead_droste10/_souphead_droste10/*repeat/*local/ Force image [0] to have an alpha channel.
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/ Item[2]: 'foreach', selection [0].
[gmic]./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/ Start 'foreach...done' block, with image [0].
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/ Enter scope '*foreach/'.
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/ Item[4]: 'if', selection [0].
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/ Command 'if': arguments = '!s||s>4'.
[gmic]./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ Start 'if...endif' block -> condition '!s||s>4' does not hold.
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ Item[8]: 'elif', selection [0].
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ Command 'elif': arguments = 's==1||s==3'.
[gmic]./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ Reach 'elif' block -> condition 's==1||s==3' holds.
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ Item[10]: 'channels', selection [0].
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ Found custom command 'channels: skip ${2=$1} e[^-1] "Keep channels $1...$2 of image$?." z 0,0,0,$1,100%,100%,100%,$2' (takes arguments).
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ Command 'channels': arguments = '0,{s}' -> '0,3'.
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ Found 2 given arguments for command 'channels':
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ $1 = '0'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ $2 = '3'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ Expand command line for command 'channels' to: 'skip 3 e[^-1] "Keep channels 0...3 of image$?." z 0,0,0,0,100%,100%,100%,3'.
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ Decompose command line into 6 items:
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ item[0] = 'skip'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ item[1] = '3'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ item[2] = 'e[^-1]'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ item[3] = 'Keep channels 0...3 of image$?.'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ item[4] = 'z'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ item[5] = '0,0,0,0,100%,100%,100%,3'
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/channels/ Enter scope 'channels/'.
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/channels/ Item[0]: 'skip', selection [0].
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/channels/ Command 'skip': arguments = '3'.
[gmic]./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/channels/ Skip argument '3'.
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/channels/ Item[2]: 'e[^-1]', selections [0,1,2,(...),5,6,7].
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/channels/ Command 'echo': arguments = 'Keep channels 0...3 of image$?.' -> 'Keep channels 0...3 of image [0].'.
[gmic]./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ Keep channels 0...3 of image [0].
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/channels/ Item[4]: 'z', selection [0].
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/channels/ Command 'crop': arguments = '0,0,0,0,100%,100%,100%,3'.
[gmic]./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/channels/ Crop image [0] with coordinates (0,0,0,0) - (100%,100%,100%,3) and dirichlet boundary conditions.
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/channels/ Exit scope 'channels/'.
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ Item[12]: 'sh.', selection [0].
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ Command 'shared': arguments = '{s-1}' -> '3'.
[gmic]./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ Insert shared buffer from channel 3 of image [0].
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ Item[14]: 'f.', selection [1].
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ Command 'fill': arguments = '255'.
[gmic]./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ Fill image [1] with 255.
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ Item[16]: 'rm.', selection [1].
[gmic]./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ Remove image [1] (1 image left).
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ Item[17]: 'fi', selection [0].
[gmic]./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/*if/ End 'if...endif' block.
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/ Item[18]: '}', selection [0].
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/*foreach/ Exit scope '*foreach/'.
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/to_a/ Exit scope 'to_a/'.
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ Item[4]: '+f.' -> 'f.', selection [0].
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ Command 'fill': arguments = '0'.
[gmic]./souphead_droste10/_souphead_droste10/*repeat/*local/ Fill image [0] with 0.
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ Item[6]: 'sh.', selection [1].
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ Command 'shared': arguments = '0'.
[gmic]./souphead_droste10/_souphead_droste10/*repeat/*local/ Insert shared buffer from channel 0 of image [1].
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ Item[8]: 'f.', selection [2].
<gmic>./souphead_droste10/_souphead_droste10/*repeat/*local/ Command 'fill': arguments = '* begin(InnerRadius = 40; OuterRadius = 100; Periodicity = 1; Strands = 1; Zoom = 1; Rotate = 0; XShift = 0; YShift = 0; XCenterShift = 0; YCenterShift = 0; StartingLevel = 1; NumberOfLevels = 10; LevelFrequency = 1; ShowBothPoles = 0; PoleRotation = 90; PoleLong = 0; PoleLat = 0; TilePoles = 0; HyperDroste = 0; FractalPoints = 1; AutoSetPeriodicity = 0; NoTransparency = 0; ExternalTransparency = 1; MirrorEffect = 0; Untwist = 0; DoNotFlattenTransparency = 0; ShowGrid = 0; ShowFrame = 0; Antialias = 1; XEdgeType = 0; YEdgeType = 0; r1 = InnerRadius/100; r2 = OuterRadius/100; p1 = Periodicity; p2 = Strands; xCenterShift = XCenterShift/100; yCenterShift = YCenterShift/100; W = (w-1)/2; H = (h-1)/2; xShift = (XShift*w/W)/100; yShift = (YShift*h/H)/100; tileBasedOnTransparency=!(NoTransparency); transparentPointsIn=!(ExternalTransparency); levelsToLookOut=StartingLevel; levelToShow=LevelFrequency; retwist=!(Untwist); if (AutoSetPeriodicity\,p1=p2/2*(1+sqrt(1-(log(r2/r1)/pi)^2)))(...)
[gmic]./souphead_droste10/_souphead_droste10/*repeat/*local/ Fill image [2] with expression '* begin(InnerRadius = 40; OuterRadius (...)x,y,0,3)=ColorOutA*255; ColorOutR*255'.
bonjour je Vien de installer g-mic qt sur mon pc dans gimp mes quand je veus recolorizer avec le filyre il me mes ce message d'erreur : preview error
error in ./gimp_recolorize_20130115_modifie/command 'rv'.invalid selection '(-2,-1)'(contains index -1,not in range -1 ...0).
et j'ai le meme message avec paint net pourier vous me dire ce que je doit faire cher la version de gimp 2.10.36 est ce que ces parceque il faut attendre une nouvelle mis a jour de g-mic qt en vous remercient
Installed with installer, on Windows 10 64 bit:
https://www.fosshub.com/GMIC.html?dwl=gmic_3.2.3_gimp2.10_win64.exe
Then on starting GIMP:
..also:
libicuuc72.dll not found
libpcre2-16-1.dll not found
and then
I just got aware that the src/Makefile
doesn't fit for downstream packagers i.e. on Gentoo and gmic is announced to be dropped entirely. (gentoo bug 916289)
My quick search lead to some patches on gentoo - OTOH I didn't see any upstreaming back here...
So my motivation is to enable upstreaming gentoo patches
@dtschump Can you have a look at those patches and see if you could integrate them in gmic to facilitate downstream packagers life?
I also whish you could
Attempting to make gmic_qt from source and following cmake build instruction steps:
CMake
cmake works on all platforms. The first part is the same and requires make and wget to be available. If you don't have all dependencies, cmake will warn you which ones are missing. Note that the minimum cmake version is 3.1.
git clone https://github.com/GreycLab/gmic.git
git clone https://github.com/c-koi/gmic-qt.git
make -C gmic/src CImg.h gmic_stdlib_community.h
cd gmic-qt
Then make a build directory:
mkdir build
cd build
cmake .. [-DGMIC_QT_HOST=none|gimp|paintdotnet|8bf] [-DGMIC_PATH=/path/to/gmic] [-DCMAKE_BUILD_TYPE=[Debug|Release|RelwithDebInfo]
make
From Terminal (first was an attempt to put gmic cli app in my local home bin folder, second was an attempt to point cmake at the downloaded source files after the error was displayed:
1108 1/1/2024 13:13 cmake .. -DGMIC_QT_HOST=none -DGMIC_PATH=/home/guyst/bin/gmic -DCMAKE_BUILD_TYPE=Release
...
1109 1/1/2024 13:13 cmake .. -DGMIC_QT_HOST=none -DGMIC_PATH=/home/guyst/source/gmic/src/gmic -DCMAKE_BUILD_TYPE=Release
Leads to following error:
CMake Error at CMakeLists.txt:152 (find_package):
Could not find a package configuration file provided by "Gmic" with any of
the following names:
GmicConfig.cmake
gmic-config.cmake
Add the installation prefix of "Gmic" to CMAKE_PREFIX_PATH or set
"Gmic_DIR" to a directory containing one of the above files. If "Gmic"
provides a separate development package or SDK, be sure it has been
installed.
I used find on the source folders and no file with either of those names is included with the source for gmic or gmic-qt downloads. I WAS able to successfully build with qmake after installing a LOT of dependencies, but it did work and is currently installed and functioning.
Thought someone should know.
Hi all,
I just downloaded GIMP 2.10.36 and installed it
I downloaded GMIC 3.2.6 plugin for GIMP, uninstalled previous version and run the 3.2.6 installer.
Now, once GIMP is running, in the filters section I can see GMIC but it is gray-ed and does not launch.
Any suggestion?
Note: the previous version with GIMP 2.10.34 used to work fine
Thanks
Basically, I would like to be able to set const variable with the number of unique elements in a vector. So, const out_size=unique_count([1,2,4,2,2]);
and out_size
would return 3 because there are only 3 unique elements.
Or better yet, a function to return only unique elements as a vector. Something akin to colormap 0
.
After applying a GMIC effect like Vibrance, the image layer goes all black if I try to apply the GIMP built-in Blur or Enhance filters after using GMIC effects. I have tried making a copy of the layer by duplicating or making new visible layer, I have exported the image with different settings keeping or converting the color profile to GIMP and nothing seems to fix this issue on my end.
As in title. I've been trying to find a way to edit the Spherize script, but I haven't found such documentation. I think it could be simple to just control the amount of X or Y the Spherize filter is applied, but without looking at the code, I can't determine. It would be great if we could define an axis by clicking and dragging on the preview area, then adjusting the amount of deformation. This is being used to wrap graphics around cylindrical objects (such as a coffee mug).
Bonjour,
Gmic ne s'ouvre pas dans Gimp 2.10.36. Problème de dll : libgcc_s_seh-1.dll
Merci de vos réponses
To reproduce:
At the end of the above steps, the original image is not restored, so in fact the reverse FFT has not been applied correctly as the text instructions claim (they say "Note: Apply this filter once to get the direct FFT, and once again to get the reverse transform.").
Note that the above sequence succeeds in restoring the original image if you instead apply "Frequencies >> Fourier Transform [Old]", although the preview is invalid. (Should a separate bug be filed for the bad preview, or will bugs in the old version not be fixed?)
GIMP: 2.10.36
G'MIC: 3.3.3
I observed a strang behaviour using the colormap command on an image with few colors.
To reproduce the issue I used a source image in 24 bit color format that uses exactly 16 colors.
Then I executed following comands with gmic version 3.3.3:
1) gmic input rgb24_16_colors.png colormap[0] 0,1,1 output palette_colormap_0-1-1.png
2) gmic input rgb24_16_colors.png colormap[0] 0,1,2 output palette_colormap_0-1-2.png
3) gmic input rgb24_16_colors.png colormap[0] 16,1,1 output palette_colormap_16-1-1.png
4) gmic input rgb24_16_colors.png colormap[0] 16,1,2 output palette_colormap_16-1-2.png
Command 1 and 2 uses "nb_levels=0". This extracts all colors from the source image.
These commands produce a correct result: A palette with exactly 16 colors. The results only differ by the sorting method.
Result command 1:
Result command 2:
Command 3 and 4 uses "nb_levels=16". The generated colormaps contains colors that aren't available in the source image
and there are some double entries.
Result command 3:
Result command 4:
I expected that command 1+3 and 2+4 would produce the same result.
I get another strange result if I use "nb_levels=256":
gmic input rgb24_16_colors.png colormap[0] 256,1,2 output palette_colormap_256-1-2.png
In this case a colormap with 256 entries is generated with a lot of double entries although I would expect that the result should only have 16 colors.
Is this a bug or did I not properly understand how the colormap command works?
I also recognized that the colormap command with gmic version 3.1.6 produces different results for command 3 and 4.
Hello everyone,
I can't install G'MIC due the fact that my virus scanner automatically delete G'MIC installer because it contain the Trojan Wacatac.B!ml malware. It could be a false positive, but i'm kinda sceptical. Just because I need to accept Wacatac.B!ml before I can use the plugin. Which means, if this is a false positive, I still gives my anti-virus the order to ignore this malware.
I also tried the zip version but I can't download it at all. The download just fails.
Can I download a older version through the official website? Because I didn't had this issue a few weeks ago when I installed a older version.
It seems that rep_find_factors_of is broken for some number. For instance 756.
Pay attention to the data, and the echo output near "G'MIC Interpreter". They're different for this number and some few other number. But, yet 256,100, and many other numbers work fine. This points to v2s() issues.
C:\Windows\System32>gmic echo ${rep_find_factors_of\ 756}
[gmic]-0./ Start G'MIC interpreter.
[gmic]-1./*substitute/rep_find_factors_of/*if#94/ Display image [0] = '[unnamed]', from point (0,1,0).
[0] = '[unnamed]':
size = (1,3,1,3) [36 b of float32].
data = (2;3;7 ^ 2;3;1 ^ 0;0;0).
min = 0, max = 7, mean = 2, std = 2.23607, coords_min = (0,0,0,2), coords_max = (0,2,0,0).
[gmic]-2./*substitute/rep_find_factors_of/*if#94/ Display images [0,1] = '[unnamed], [begin( const num_of_primes(...)_of_primes,0); modulo_list[0]=tv=1; r', from point (0,1,0).
[0] = '[unnamed]':
size = (1,3,1,3) [36 b of float32].
data = (2;3;7 ^ 2;3;1 ^ 0;0;0).
min = 0, max = 7, mean = 2, std = 2.23607, coords_min = (0,0,0,2), coords_max = (0,2,0,0).
[1] = '[begin( const num_of_primes=h#-(...)primes,0); modulo_list[0]=tv=1; repea:
size = (24,1,1,1) [96 b of float32].
data = (1,2,4,3,6,12,9,18,36,27,54,108,7,14,28,21,42,84,63,126,252,189,378,756).
min = 1, max = 756, mean = 93.3333, std = 168.36, coords_min = (0,0,0,0), coords_max = (23,0,0,0).
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2
[gmic]-0./ End G'MIC interpreter.
Here's the modified command for rep_find_factors_of for testing purpose only.
#@cli rep_find_factors_of: num_0...
#@cli : Return the factors found in all numbers at once.
#@cli :
#@cli : Author : Reptorian.
#@cli : $ echo ${rep_find_factors_of\ 256}
#@cli : $ echo ${rep_find_factors_of\ 256,100}
#@cli : $ echo ${rep_find_factors_of\ 256,100,50}
rep_find_factors_of:
if !$# error ("\$\#">0)==F fi
if $#==1
v=$1
if $v<0 error inv_inp
elif $v>5000000000000000 error exc_lim
elif $v!=int($v) error inv_inp
elif $v<2 u $v return
fi
else
if $#>2 v=${rep_gcd_multiple_numbers\ $*}
else v={gcd(${1-2})}
fi
if $v<2 u $v return fi
fi
1,1,1,3 # Prime Value, Base, Error
eval "
start_v=v=$v;
square=int(sqrt(v));
for(n=2,n<=square&&n<=v,++n,
isPrime=1;
for(p=0,p<da_size(#-1),++p,
prime=(I[#-1,p])[0]-(I[#-1,p])[2];
if(sqr(prime)>n,
break();
);
if(!(n%prime),
isPrime=0;
break();
);
);
if(isPrime,
count=0;
while(!(v%n),
++count;
v/=n;
);
if(count,
da_push(#-1,[n,count,0]);
diff=(da_back(#-1))[0]-n;
if(diff,I[#-1,da_size(#-1)-1]=[n,count,diff]);
square=int(sqrt(v));
);
);
);
if(v!=1,
da_push(#-1,[v,1,0]);
diff=(da_back(#-1))[0]-v;
if(diff,I[#-1,da_size(#-1)-1]=[v,1,diff]);
);
output=da_size(#-1)==1&&v==start_v?v:0;
da_freeze(#-1);
if(output,
set('pv',v);
);
output;"
if ${}
remove.
status 1,$pv
else
display
{prod(crop(0,0,0,1,1,h,1,1)+1)},1,1,1,"begin(
const num_of_primes=h#-1;
primes_freq_choices=crop(#-1,0,0,0,1,1,num_of_primes,1,1)+1;
primes_list=crop(#-1,0,0,0,0,1,num_of_primes,1,1)-crop(#-1,0,0,0,2,1,num_of_primes,1,1);
modulo_list=vector(#num_of_primes,0);
modulo_list[0]=tv=1;
repeat(num_of_primes-1,p,
tv*=primes_freq_choices[p];
modulo_list[p+1]=tv;
);
result=vector(#w,0);
);
m=int(x/modulo_list)%primes_freq_choices;
result[x]=prod(primes_list^m);
end(
set('{}',v2s(sort(result)));
);
"
display
remove[-2,-1]
fi
Note that in the last display instance, it appears there's all the numbers which are the factor of 756. However, it doesn't show up with ${} for some reason. Another number which is wrong is 1110. This only happens with some numbers. In many cases, it works as expected.
I don't seem to be able to get the plug-in to load in Affinity Photo 2.4.2 installed on Win 11 LG Laptop.
I have followed the instructions and every time I try to use the plug-in I get the following message - "CreateProcess failed; unknown error".
I have tried installing the plug-in in other locations where other plug-ins are installed and working and the result is always the same error message.
There should be a default terminating echo message which is: [gmic]./ End G'MIC interpreter.
. Optionally, arguments would override this message.
Now I have something like this for one of my personal user command to run Python files that aids in G'MIC scripting.
e[0] "End G'MIC interpreter."
quit
With a default print message, that can be shortened to just q or quit. I also noticed that commands that use q/quit typically don't have other codes beyond q/quit.
Here's the command code I'm using, so maybe I'm missing something here?
#@cli run_pyscript:
#@cli : Run user-defined script. If you provide no argument, then it will print description on how to use your script. If you ran into a error, run without an argument, and modify your argument to make this work.
run_pyscript:
skip "${1=}"
_available_variables=""
_number_of_available_scripts=0
script_file_info="D:\\Documents\\Python\\gmic-scripting-tools\\"
_$0_info shift_vars_num,GMIC-Increment-Arg-Number.py,"Shift variables numbers."
_$0_info modify_gui_vars,GUI-variable-inputs.py,"Modify GUI Variables to append numbers or to remove numbers into GUI Variables."
if narg($1)
if isint($1)
id=${arg\ $1+1,$_available_variables}
else
id=$1
fi
test_input=${_script_${id}_filename}
if !narg($test_input) error invalid_arg fi
script_file_info.=$test_input
e[0] "Executing script "${_script_${id}_filename}!\n
exec 1,"python "$script_file_info
e[0] "Finished executing script "${_script_${id}_filename}!
else
e[0] "Allowed arguments: 0-"{$_number_of_available_scripts-1}"(inclusive) or "$_available_variables.
repeat $_number_of_available_scripts {
current_variable=${arg\ $>+1,$_available_variables}
e[0] Arg\ $>\ :\ $current_variable\ -\ ${_script_${>}_helper}
}
fi
e[0] "End G'MIC interpreter."
quit
_run_pyscript_info:
check "$#==3"
if narg($_available_variables)
_available_variables.=,$1
else
_available_variables.=$1
fi
_script_$1_filename="$2"
_script_$1_helper="$3"
_number_of_available_scripts+=1
At the moment, I would like to have a variable within the math parser which is a constant, and tells me whether it is a multi-threaded process or not. I know that behind the scene, when the processing mode is not specified, G'MIC will choose it for you automatically. And I'm working on a code which contains conditionals in order to get around this.
I use the G'MIC plugin in GIMP in Windows and Linux. Exploring the effects, I have noticed that some of the effects listed in Windows are not present in Linux, specifically, in Arrays & Tiles, Loose Photos is missing, and in Artistic, Comic Book and Paint With Brush are missing.
There may be more, but those were just the 3 I noticed first, and was wondering why....
Will these be added to a future update in Linux?
Thanks
The plugin is not detected, not available in the menu although both installs went well (gimp & gmic)
Plugin installed in C:\Users\despo\AppData\Roaming\GIMP\2.10\plug-ins and is visible from gimp's plugin directory browser.
This problem is in version 3.3.2, and can be seen on both Windows and Linux. fx_vibrance works well for negative strength values, but not for positive values. The problem is the worst if the output is a PNG file, for example:
gmic input.png fx_vibrance 1.58 output out.png
I noticed that there seems to be some kind of overflow, and if I add the cut 0,255
command as a second command before creating the output file, then it's OK. Vibrance works well in Gimp, probably because Gimp cuts it automatically.
I've tried a regular, standard debian 12 repo install of gimp and gimp-gmic, now a flatpak version of gimp (2.10.36) and gmic (3.3.1) -- and both show gmic as grayed out and inaccessible in the Gimp Filters menu. Any ideas what to do?
Inspired by this thread - https://discuss.pixls.us/t/sort-images-according-to-n-sized-channels/40480/5 .
I think it would be a good idea to have permute_xyzc function within the math evaluator. This would allow to treat cropped areas as if they were permute of a image. There can also be inverse_permute_xyzc to make it easy to draw the values back though it's not hard to find the inverse permute xyzc, and I have a custom G'MIC command just to do that.
What happened to the commit history, tags, etc?
Was there some sort of GitHub issue that required this? The loss of a project's history, commit messages, issues, MRs, etc.. is a huge blow to the project, so I'm sorry to see this loss of yours.
I open a homemade template with basic colors, and some photo's in underlaying layers, then I open the filter "Drawn Montage" in G'Mic.
I get a preview error. It seems something is going wrong in this filter.
I performed the exact same action with the previous version of G'Mic without problems,
I work with Gimp 2.10.34 (revisie2) and the latest stable version of G'Mic 3.3.1. for Windows. A friend with a Linux computer got the same error.
Hereby a screenshot.
Hello,
GMIC-Qt has been crashing Krita when I try to update the filter definitions. I'm not sure how to get a crash log, but I'm happy to provide as much information as I can to reproduce the issue.
I'm running Krita 5.2.2 without plugins on Windows 11. I've allocated approximately 14 of my 16 GB of RAM, and I don't have a discrete graphics card.
If the following .gmd
source is run through gmd2html
:
# 1. Section title
## 1.1. Sub-section title
### 1.1.1. Sub-sub-section title
#### 1.1.1.1. Sub-sub-sub-section title
The resulting HTML source will be (wrapped for readability):
<a name="_1_section_title"></a>
<div class="gmd_section">1. Section title</div>
<a name="_1_1_sub_section_title"></a>
<div class="gmd_subsection">1.1. Sub-section title</div>
<a name="_1_1_1_sub_sub_section_title"></a>
<div class="gmd_subsubsection">1.1.1. Sub-sub-section title</div>
<a name="_1_1_1_1_sub_sub_sub_section_title"></a>
<div class="gmd_subsubsubsection">1.1.1.1. Sub-sub-sub-section title</div>
The use of semantic structural elements, including headings to label sections of a document, has accessibility implications and is one of the WCAG Success Criteria for accessible web content. All users, but especially those using assistive technologies, use headings to navigate page content. From the point of view of a screen reader or other assistive device, a styled <div>
that looks like a heading is not remotely the same thing as a recognized HTML heading element (<h1>
through <h6>
).
From the first link above (WebAIM: Semantic Structure):
Implementing Headings
Headings must use heading tags.
Screen readers and assistive technologies rely on heading tags (
<h1>
-<h6>
) to identify headings. Text that is merely large, bold, or emphasized is not interpreted as a heading unless the<h1>
-<h6>
markup is used.Use headings only when they represent following content.
To highlight or emphasize text that is not a heading, use styles—not heading tags—to achieve visual results.
the exe gives me a folder with a lot of shit in it that doesnt want to start up and the gimp doesnt have the thing in it and yes i have restarted everything a houndred times
where the fuck do i put the stuff in the folder why is there no instructions anywhere
Looking at substitution rule, there doesn't seem to be the current path variable. This is useful in case of files command.
So my idea is simply this:
$_path: String that returns current location. (CLI)
But, again, this is minor, and not really all that needed, but it's a idea.
Also, I searched updatexxxx.gmic with regex parameter \b\$_path\b
, it's not used either.
In case of GUI plugin, it would be the same as $_path_rc
or nan
. Either works.
I found this BTW: https://en.cppreference.com/w/cpp/filesystem/current_path
Hello,
Thank you for such an awesome project!
I have not been able to use the (Curvature) setting when using this frame filter.
Having all settings to (0), and only using the (Y-shadow) to around 3, and setting the (Smoothness), and wanting to set a (Curvature) for the shadow, it will not adjust the shadow's curvature like before. The last version of GMIC that I was able to use the curvature setting was 3.2.6.
Thank you for your help.
Is there a reason why this problem shows up?
foo 15,10
foo:
eval "
const max_number=int(abs($1));
const base=int(abs($2));
const log_base=log(base);
logb(n)=log(n)/log_base;
concat_consec_digits_count(n)=n>=base?(tn=floor(logb(n));n+(n+1)*tn+(base*(1-base^tn))/(base-1)):n;
const number_of_digits_in_concatenated_number=concat_consec_digits_count(max_number);"
I'm pretty sure everything is a const.
EDIT: Oh, the additional ";". That's why.
On https://gmic.eu/ pount 4 referst to G'MIC Online: https://gmicol.greyc.fr/
But clicking on the link brings: 504 Gateway Time-out
Version 3.3.1 of the GMIC GIMP plugin on Windows (64 bit) requires libicudt72.dll and libicuuc72.dll, which it expects to find in the GIMP bin directory. But the new GIMP version, 2.10.36, has libicudt73.dll and libicuuc73.dll instead.
I was able to run GMIC by copying libicudt72.dll and libicuuc72.dll from Inkscape 1.3 into C:\Program Files\GIMP 2\bin\ but of course GMIC should be upgraded to the new versions of these DLLs.
Hi
I've been using Gimp and Gmic plugin for a while now and I'm looking for a way to automatize applying filter to many photos with a shell script.
The filters I want to apply are the "Colors/Color Presets", lets's say for the example "Cinematic Travel/Warm Teal"
How can I apply it with a command line, using gmic
directly?
Is there a way to customize the configuration values (contrast, gamma, hue ...) of the filter ?
Thanks
C:\Windows\System32
λ gmic 2,1,1,1,x+2
[gmic]./ Start G'MIC interpreter (v.3.3.2).
[gmic]./ Input file '2' at position 0
[gmic]./ *** Error *** Command 'input': File '2', format does not take any input options (options '1,1,1,x+2' specified).
Just leaving this here.
I have download the latest stable version of G'MIC for Gimp, but the installer respond with a bunch of missing files. Then, i downloaded the standalone version of G'MIC and it worked just fine. I think you should recheck that all files are included into the plug-in version for Gimp.
this was one of the missing files...
I am using Windows 11, 64 bits.
Hello,
Windows 10
GIMP 2.10.36
G'MIC 3.3.5
In the “FRAME [regular]” filter, the “frame parameters” part no longer reacts in the preview: wight, height, color and outline.
On the other hand, “crop parameters” above works well in the preview and when a new image is output.
By validating
I'm incorporating libgmic into rawproc, my WIN32 target is compiled by mxe, an all-static toolchain. rawproc link errors out on libgmic undefined references to '__imp_curl_easy*' calls.
What's needed is a ADD_DEFINITIONS(DCURL_STATICLIB )
to the if(BUILD_LIB_STATIC) ... endif()
block in CMakeLists.txt to compel libgmic to use the curl static calls. Probably also need the equivalent in src/Makefile, but I haven't researched that one.
ref: https://curl.se/docs/faq.html#Link_errors_when_building_libcur
As you noticed on the forum, I have figured out how to display characters correctly. However, with the custom command I have made, they don't work well because this example:
e {`'é'`}
would print multiple numbers. And my string_permutation* family commands do involve sorting characters. And the fact that this prints multiple numbers would lead to complications as my code didn't account for that, and I don't see a easy way to account for that.
I tried to install either the zip or installer (exe) but I got an error either way. I get the 0xc000007b error via Zips (and installing the pic 2 libs) along with when I try to click the installer I cannot open it at all. I get hit with what is shown in pic 3. I am on Windows 11 build 23H2 version KB5034123
I just have a idea to extend the usage of binary/hex literals outside of the math parser.
Syntax:
-0x(100,200)
This would be equivalent of
(256,512)
The reason I think this is a good idea is that some languages use hexadecimal to generate palettes. At the moment, we have to do a little bit of finicky thing to bypass the issue of conversion.
Some other suggestion for syntax:
-0x3(AABBCC,DDEEFF)
The number after -0x tells us the number of channels in the output image. So, first pixel is #AABBCC
.Yes, this would mean ^ wouldn't be allowed, but for simplicity of conversion, this is fine. Other characters are permitted like [ , ] or [ / ] or [ ; ]. And of course, to enforce the numbers of characters. So, 3 would means 6 characters for each numbers, 4 would mean 8 characters, and so forth.
The reason for -0x is that 0x is reserved for numbers of 0x0x0x0 image.
And of course, you can extend this concept to binary like -0b() or -0bN() where N is the number of channels. You could argue of -0dN() for decimals, as it can be done too and it can be even easier to work with too.
Some catch is that this might require c-koi to make new color dialogs for each cases and they output 1 string variable per color. This would simplify the process of making palettes with GUI. prawnsushi for example struggled with inputs, and this alleviates that issue.
I wonder if there's something wrong with parse_cli.
C:\Windows\System32>gmic whatis ratio
[gmic]./ Start G'MIC interpreter (v.3.3.4).
fitratio_wh
poweriteration
rep_nearest_ratio
rep_technorobbo_intense_filtration
resize_ratio2d
[gmic]./ End G'MIC interpreter.
Pretty sure rep_technorobbo_intense_filtration is not part of it nor poweriteration should be there. But, this is just minor bug, not a urgent one.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.