Ultima versione: https://github.com/jackroom/lomopack
Salvare il seguente codice come lomo.scm nella cartella Scripts del Gimp (/home/utente/.gimp-2.x/scripts)
; GIMP Lomo v0.3
; Simula l'effetto di una "lomografia".
;
; Copiare il file lomo.scm nella cartella scripts di Gimp. Se il programma
; è in esecuzione, aggiornare la lista dei filtri selezionando
; Filtri > Script-fu > Rinfresca gli scripts.
; Il filtro lomo sarà così accessibile da Filtri > Personal > Lomo.
(define (script-fu-lomo inImage inBackground theContrast theMerge theColor theBlur theVign)
; Avvia il gruppo della cronologia per questo script
(gimp-image-undo-group-start inImage)
(define (Border theAction)
(let*
(
(inBlur (car (gimp-layer-copy inBackground TRUE)))
; Imposta un raggio proporzionale per la sfocatura
(theWidth (car (gimp-drawable-width inBlur)))
(theHeight (car (gimp-drawable-height inBlur)))
(theBlursize (/ (/ (+ theHeight theWidth) 2) 100))
(theDrawable 0)
(theE 8)
)
(gimp-image-add-layer inImage inBlur -1)
(cond
((= theAction 0)
(plug-in-gauss-rle RUN-NONINTERACTIVE inImage inBlur theBlursize TRUE TRUE)
)
((= theAction 1)
(gimp-levels inBlur HISTOGRAM-VALUE 0 255 1.00 0 (- 255 (/ (* theVign 255) 100)))
)
)
; Crea la maschera per il livello della sfocatura
(let
( (inMask (car (gimp-layer-create-mask inBlur ADD-WHITE-MASK))) )
(gimp-layer-add-mask inBlur inMask)
)
; Disegna un'ellisse nella maschera
(set! theDrawable (car (gimp-image-get-active-drawable inImage)))
(gimp-ellipse-select inImage (/ theWidth theE) (/ theHeight theE) (- theWidth(* (/ theWidth theE) 2)) (- theHeight (* (/ theHeight theE) 2)) 2 TRUE FALSE 0)
(gimp-invert theDrawable)
(gimp-selection-none inImage)
(plug-in-gauss-rle2 RUN-NONINTERACTIVE inImage theDrawable (/ theWidth 2) (/ theHeight 2))
; Fonde il livello della sfocatura
(gimp-image-merge-down inImage inBlur 1)
; Attiva il livello modificato
(set! inBackground (car (gimp-image-get-active-drawable inImage)))
)
)
; ---------------------------------------------------------------------
; Aggiunge la sfocatura ai bordi
; ---------------------------------------------------------------------
(if (= theBlur 1)
(begin
(Border 0)
)
)
; ---------------------------------------------------------------------
; Aggiunge un effetto di vignettatura
; ---------------------------------------------------------------------
(if (> theVign 0)
(begin
(Border 1)
)
)
; ---------------------------------------------------------------------
; Effetto Lomo
; Da questo punto vengono applicati gli effetti di colore all'immagine
; ---------------------------------------------------------------------
(let*
(
; Esegue la copia del livello per la tonalità
(inTonal (car (gimp-layer-copy inBackground TRUE)))
; Copia il livello per la desaturazione
(inDesat (car (gimp-layer-copy inBackground TRUE)))
)
; Inserisce il livello tonalità
(gimp-image-add-layer inImage inTonal -1)
; Inserisce il livello da desaturare
(gimp-image-add-layer inImage inDesat -1)
; Inverte i livelli del canale blu del livello principale
(gimp-levels inBackground HISTOGRAM-BLUE 0 255 1.00 255 0)
; Imposta la modalità della tonalità come Luce Forte
(gimp-layer-set-mode inTonal HARDLIGHT-MODE)
; Desatura l'ultimo livello
(gimp-desaturate-full inDesat DESATURATE-LUMINOSITY)
; Modalità livello desaturazione: Solo Toni Scuri
(gimp-layer-set-mode inDesat DARKEN-ONLY-MODE)
; Regola livelli (contrasta)
(gimp-levels inDesat HISTOGRAM-VALUE 40 215 1.00 0 255)
; Imposta Opacità al 40%
(gimp-layer-set-opacity inDesat 40)
; Aumenta il contrasto regolando le curve di inTonal
(if (= theContrast 1)
(begin
(gimp-curves-spline inTonal 0 8 #( 0 0 70 50 195 215 255 255))
(gimp-curves-spline inTonal 1 8 #( 0 0 84 70 212 208 255 255))
(gimp-curves-spline inTonal 2 8 #( 0 0 144 127 212 212 255 255))
(gimp-curves-spline inTonal 3 8 #( 0 0 70 82 194 210 255 255))
)
)
; Aggiunge del colore
(if (= theColor 1)
(begin
(plug-in-retinex RUN-NONINTERACTIVE inImage inBackground 80 3 2 1.9)
)
)
; Appiattisce i livelli se deciso
(if (= theMerge 0)
(begin
; Unisce il livello della tonalità allo sfondo
(gimp-image-merge-down inImage inTonal 1)
; Unisce il livello della saturazione
(gimp-image-merge-down inImage inDesat 1)
)
)
; Chiude il gruppo della cronologia
(gimp-image-undo-group-end inImage)
; Aggiorna l'immagine
(gimp-displays-flush)
)
)
; -----------------------------------------------------------------------
; Attiva lo script
; -----------------------------------------------------------------------
(script-fu-register
"script-fu-lomo"
"Lomo"
"Genera un effetto Lomo"
"any Jack"
"2012"
"February 3, 2012"
"RGB*"
SF-IMAGE "Image" 0
SF-DRAWABLE "Livello da duplicare" 0
SF-TOGGLE "Aumenta il contrasto (Blu enfatizzati)" FALSE
SF-TOGGLE "Crea livelli separati" FALSE
SF-TOGGLE "Colora (Rende i colori più vivaci)" FALSE
SF-TOGGLE "Aggiungi una sfocatura ai bordi" FALSE
SF-ADJUSTMENT "Vignettatura" '(0 0 100 1 10 0 0)
)
; Definisce dove inserire il filtro nel menu
(script-fu-menu-register "script-fu-lomo" "
/Filters/Personal")













