Skip to content

Commit 32b5ed4

Browse files
committed
1.2025.05.18: add ris-undefect and balance
1 parent 031bdf5 commit 32b5ed4

File tree

3 files changed

+183
-24
lines changed

3 files changed

+183
-24
lines changed

scheme/balance.scm

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
;
2+
; (gimp-layer-set-mode layer-base SCREEN-MODE)
3+
; NORMAL-MODE 0
4+
; DISSOLVE-MODE 1
5+
; BEHIND-MODE 2
6+
; MULTIPLY-MODE 3
7+
; SCREEN-MODE 4
8+
; OVERLAY-MODE 5
9+
; DIFFERENCE 6
10+
; ADDITION-MODE 7
11+
; SUBTRACT-MODE 8
12+
; DARKEN-ONLY-MODE 9
13+
; LIGHTEN-ONLY-MODE10
14+
; HUE-MODE 11
15+
; SATURATION-MODE 12
16+
; COLOR-MODE 13
17+
; VALUE-MODE 14
18+
; DIVIDE-MODE 15
19+
; DODGE-MODE 16
20+
; BURN-MODE 17
21+
; HARDLIGHT-MODE 18
22+
; SOFTLIGHT-MODE 19
23+
; GRAIN-EXTRACT-MODE 20
24+
; GRAIN-MERGE-MODE 21
25+
; COLOR-ERASE-MODE 22
26+
27+
(define (balance image
28+
drawable
29+
radius)
30+
(let*
31+
(
32+
(drawable (car (gimp-image-active-drawable image)))
33+
(layer-base (car (gimp-layer-copy drawable TRUE)))
34+
(layer-blur1 (car (gimp-layer-copy drawable TRUE)))
35+
(layer-blur2 (car (gimp-layer-copy drawable TRUE)))
36+
(radius2 (+ radius radius))
37+
(layer-blur1n (car (gimp-layer-copy drawable TRUE)))
38+
(layer-blur2n (car (gimp-layer-copy drawable TRUE)))
39+
)
40+
41+
(gimp-image-undo-group-start image)
42+
43+
(set! layer-base (car (gimp-layer-new-from-visible image image "balance")))
44+
(set! layer-blur1 (car (gimp-layer-copy layer-base TRUE)))
45+
(set! layer-blur2 (car (gimp-layer-copy layer-base TRUE)))
46+
(gimp-image-insert-layer image layer-base 0 -1)
47+
(gimp-image-insert-layer image layer-blur1 0 -1)
48+
(gimp-image-insert-layer image layer-blur2 0 -1)
49+
(plug-in-gauss TRUE image layer-blur1 radius radius 0)
50+
(plug-in-gauss TRUE image layer-blur2 radius2 radius2 0)
51+
(set! layer-blur1n (car (gimp-layer-copy layer-blur1 TRUE)))
52+
(gimp-image-insert-layer image layer-blur1n 0 -1)
53+
(gimp-drawable-invert layer-blur1n FALSE)
54+
(set! layer-blur2n (car (gimp-layer-copy layer-blur2 TRUE)))
55+
(gimp-image-insert-layer image layer-blur2n 0 -1)
56+
(gimp-drawable-invert layer-blur2n FALSE)
57+
(gimp-image-lower-item image layer-blur1n)
58+
(gimp-image-lower-item image layer-blur2n)
59+
(gimp-image-lower-item image layer-blur2n)
60+
(gimp-image-lower-item image layer-blur2n)
61+
(gimp-layer-set-mode layer-blur1 OVERLAY-MODE)
62+
(set! layer-blur1 (car (gimp-image-merge-down image layer-blur1 EXPAND-AS-NECESSARY)))
63+
(gimp-layer-set-mode layer-blur2 OVERLAY-MODE)
64+
(set! layer-blur2 (car (gimp-image-merge-down image layer-blur2 EXPAND-AS-NECESSARY)))
65+
(gimp-layer-set-mode layer-blur1 OVERLAY-MODE)
66+
(set! layer-base (car (gimp-image-merge-down image layer-blur1 EXPAND-AS-NECESSARY)))
67+
(gimp-layer-set-mode layer-blur2 OVERLAY-MODE)
68+
(set! layer-base (car (gimp-image-merge-down image layer-blur2 EXPAND-AS-NECESSARY)))
69+
70+
(gimp-displays-flush)
71+
72+
(gimp-image-undo-group-end image)
73+
)
74+
)
75+
76+
(script-fu-register "balance"
77+
"_Balance"
78+
"Balance filter"
79+
"zvezdochiot https://github.com/zvezdochiot"
80+
"This is free and unencumbered software released into the public domain."
81+
"2025-05-13"
82+
"*"
83+
SF-IMAGE "Image" 0
84+
SF-DRAWABLE "Drawable" 0
85+
SF-VALUE "Radius" "25"
86+
)
87+
88+
(script-fu-menu-register "balance" "<Image>/Colors/Auto")

scheme/resize-ris.scm

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
;
2-
; (gimp-layer-set-mode layer-copy SCREEN-MODE)
2+
; (gimp-layer-set-mode layer-base SCREEN-MODE)
33
; NORMAL-MODE 0
44
; DISSOLVE-MODE 1
55
; BEHIND-MODE 2
@@ -34,39 +34,29 @@
3434
(drawable (car (gimp-image-active-drawable image)))
3535
(oldwidth (car (gimp-image-width image)))
3636
(oldheight (car (gimp-image-height image)))
37-
(layer-copy (car (gimp-layer-copy drawable TRUE)))
37+
(layer-base (car (gimp-layer-copy drawable TRUE)))
3838
(layer-defect (car (gimp-layer-copy drawable TRUE)))
39-
(new-layer-1 (car (gimp-layer-copy drawable TRUE)))
40-
(new-layer-2 (car (gimp-layer-copy drawable TRUE)))
41-
(new-layer-3 (car (gimp-layer-copy drawable TRUE)))
39+
(layer-copy (car (gimp-layer-copy drawable TRUE)))
4240
)
4341

4442
(gimp-image-undo-group-start image)
4543

4644
(gimp-context-set-interpolation method)
4745

48-
(set! layer-copy (car (gimp-layer-new-from-visible image image "visible")))
49-
(set! layer-defect (car (gimp-layer-copy layer-copy TRUE)))
50-
(gimp-image-insert-layer image layer-copy 0 -1)
46+
(set! layer-base (car (gimp-layer-new-from-visible image image "visible")))
47+
(set! layer-defect (car (gimp-layer-copy layer-base TRUE)))
48+
(gimp-image-insert-layer image layer-base 0 -1)
5149
(gimp-image-insert-layer image layer-defect 0 -1)
5250
(gimp-layer-scale layer-defect newwidth newheight TRUE)
5351
(gimp-layer-scale layer-defect oldwidth oldheight TRUE)
5452

55-
(set! new-layer-1 (car (gimp-layer-copy layer-copy TRUE)))
56-
(set! new-layer-2 (car (gimp-layer-copy layer-copy TRUE)))
57-
(set! new-layer-3 (car (gimp-layer-copy layer-defect TRUE)))
58-
(gimp-image-insert-layer image new-layer-1 0 -1)
59-
(gimp-image-insert-layer image new-layer-2 0 -1)
60-
(gimp-image-insert-layer image new-layer-3 0 -1)
61-
(gimp-layer-set-mode new-layer-1 SUBTRACT-MODE)
62-
(set! layer-defect (car (gimp-image-merge-down image new-layer-1 EXPAND-AS-NECESSARY)))
63-
(gimp-layer-set-mode new-layer-3 SUBTRACT-MODE)
64-
(set! new-layer-2 (car (gimp-image-merge-down image new-layer-3 EXPAND-AS-NECESSARY)))
65-
(gimp-layer-set-mode layer-defect SUBTRACT-MODE)
66-
(set! layer-copy (car (gimp-image-merge-down image layer-defect EXPAND-AS-NECESSARY)))
67-
(gimp-layer-set-mode new-layer-2 ADDITION-MODE)
68-
(set! layer-copy (car (gimp-image-merge-down image new-layer-2 EXPAND-AS-NECESSARY)))
69-
(gimp-item-set-name layer-copy "RIS")
53+
(set! layer-copy (car (gimp-layer-copy layer-base TRUE)))
54+
(gimp-image-insert-layer image layer-copy 0 -1)
55+
(gimp-layer-set-mode layer-copy GRAIN-EXTRACT-MODE)
56+
(set! layer-defect (car (gimp-image-merge-down image layer-copy EXPAND-AS-NECESSARY)))
57+
(gimp-layer-set-mode layer-defect GRAIN-EXTRACT-MODE)
58+
(set! layer-base (car (gimp-image-merge-down image layer-defect EXPAND-AS-NECESSARY)))
59+
(gimp-item-set-name layer-base "RIS")
7060

7161
(gimp-image-scale image newwidth newheight)
7262

@@ -81,7 +71,7 @@
8171
"Resize used RIS (Reverse Interpolate Scale)"
8272
"zvezdochiot https://github.com/zvezdochiot"
8373
"This is free and unencumbered software released into the public domain."
84-
"2025-02-07"
74+
"2025-03-27"
8575
"*"
8676
SF-IMAGE "Image" 0
8777
SF-DRAWABLE "Drawable" 0

scheme/ris-undefect.scm

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
;
2+
; (gimp-layer-set-mode layer-base SCREEN-MODE)
3+
; NORMAL-MODE 0
4+
; DISSOLVE-MODE 1
5+
; BEHIND-MODE 2
6+
; MULTIPLY-MODE 3
7+
; SCREEN-MODE 4
8+
; OVERLAY-MODE 5
9+
; DIFFERENCE 6
10+
; ADDITION-MODE 7
11+
; SUBTRACT-MODE 8
12+
; DARKEN-ONLY-MODE 9
13+
; LIGHTEN-ONLY-MODE10
14+
; HUE-MODE 11
15+
; SATURATION-MODE 12
16+
; COLOR-MODE 13
17+
; VALUE-MODE 14
18+
; DIVIDE-MODE 15
19+
; DODGE-MODE 16
20+
; BURN-MODE 17
21+
; HARDLIGHT-MODE 18
22+
; SOFTLIGHT-MODE 19
23+
; GRAIN-EXTRACT-MODE 20
24+
; GRAIN-MERGE-MODE 21
25+
; COLOR-ERASE-MODE 22
26+
27+
(define (ris-undefect image
28+
drawable
29+
factor
30+
method)
31+
(let*
32+
(
33+
(drawable (car (gimp-image-active-drawable image)))
34+
(oldwidth (car (gimp-image-width image)))
35+
(oldheight (car (gimp-image-height image)))
36+
(newwidth (* oldwidth factor))
37+
(newheight (* oldheight factor))
38+
(layer-base (car (gimp-layer-copy drawable TRUE)))
39+
(layer-defect (car (gimp-layer-copy drawable TRUE)))
40+
(layer-copy (car (gimp-layer-copy drawable TRUE)))
41+
)
42+
43+
(gimp-image-undo-group-start image)
44+
45+
(gimp-context-set-interpolation method)
46+
47+
(set! layer-base (car (gimp-layer-new-from-visible image image "visible")))
48+
(set! layer-defect (car (gimp-layer-copy layer-base TRUE)))
49+
(gimp-image-insert-layer image layer-base 0 -1)
50+
(gimp-image-insert-layer image layer-defect 0 -1)
51+
(gimp-layer-scale layer-defect newwidth newheight TRUE)
52+
(gimp-layer-scale layer-defect oldwidth oldheight TRUE)
53+
54+
(set! layer-copy (car (gimp-layer-copy layer-base TRUE)))
55+
(gimp-image-insert-layer image layer-copy 0 -1)
56+
(gimp-layer-set-mode layer-copy GRAIN-EXTRACT-MODE)
57+
(set! layer-defect (car (gimp-image-merge-down image layer-copy EXPAND-AS-NECESSARY)))
58+
(gimp-layer-set-mode layer-defect GRAIN-EXTRACT-MODE)
59+
(set! layer-base (car (gimp-image-merge-down image layer-defect EXPAND-AS-NECESSARY)))
60+
(gimp-item-set-name layer-base "RISundefect")
61+
62+
(gimp-displays-flush)
63+
64+
(gimp-image-undo-group-end image)
65+
)
66+
)
67+
68+
(script-fu-register "ris-undefect"
69+
"_RIS undefect"
70+
"Undefect based Resize used RIS (Reverse Interpolate Scale)"
71+
"zvezdochiot https://github.com/zvezdochiot"
72+
"This is free and unencumbered software released into the public domain."
73+
"2025-05-18"
74+
"*"
75+
SF-IMAGE "Image" 0
76+
SF-DRAWABLE "Drawable" 0
77+
SF-VALUE "Factor" "0.5"
78+
SF-ENUM "Method" '("InterpolationType" "cubic" "none" "linear" "cubic" "nohalo" "lohalo")
79+
)
80+
81+
(script-fu-menu-register "ris-undefect" "<Image>/Image/Transform")

0 commit comments

Comments
 (0)