GIMP script for the Lomo effect

So, here's a GIMP script for achieving the Lomo effect. The script will enable you to create pictures that look like this:

from an image like this:

The original image was taken using the camera on my phone (LG P500), a really sad 3.2 MP camera. Nevertheless, I think the image makes an ideal example for demonstrating the Lomo effect, which is why I included it.

If you search on the internet, you'll probably find a number of tutorials on how to fake the Lomo effect. The trouble is that they don't seem to agree much with each other. Bummer! So, I came up with my own technique (if you feel that the technique is flawed, let me know, I'll correct it) based on what I thought gives the effect seen in many Lomo photographs.

Basically, I increase contrast on the red and green channels, decrease contrast on the blue channel; all using curves, then increase the saturation and add a vignette.

Without much ado, here is the script:
UPDATE: The code is now available on my GitHub repository.


;An example script for the lomo effect.
;This script increases contrast on the red and green channels, decreases contrast on the blue channel, and increases saturation on the image. It also adds a Vignette.

(define (script-fu-lomo-effect img drawable)

        ;Create a new layer
        (define curves-layer (car (gimp-layer-new-from-visible img img "Curves")))
        (gimp-image-insert-layer img curves-layer 0 0)

        ;Modify the curves
        (gimp-curves-spline curves-layer HISTOGRAM-RED 8 #(0 0 60 30 190 220 255 255))
 (gimp-curves-spline curves-layer HISTOGRAM-GREEN 8 #(0 0 60 30 190 220 255 255))
 (gimp-curves-spline curves-layer HISTOGRAM-BLUE 8 #(0 0 30 60 220 190 255 255))
        ;Increase the saturation
        (gimp-hue-saturation curves-layer ALL-HUES 0 0 50)

        ;Now, add vignette layer group
 (define vignette-group (car (gimp-layer-group-new img)))
 (gimp-item-set-name vignette-group "Vignette")
 (gimp-layer-set-mode vignette-group OVERLAY-MODE)
 (gimp-layer-set-opacity vignette-group 100)
 (gimp-image-insert-layer img vignette-group 0 0)

 (define img-height (car (gimp-image-height img)))
 (define img-width (car (gimp-image-width img)))
 
 ;Now, for the vignette layers
 (define vignette-white (car (gimp-layer-new img img-width img-height RGBA-IMAGE "White" 100 NORMAL-MODE)))
 (gimp-image-insert-layer img vignette-white vignette-group 0)
 (gimp-context-set-foreground '(255 255 255))
 (gimp-edit-blend vignette-white FG-TRANSPARENT-MODE NORMAL-MODE GRADIENT-RADIAL 100 0 REPEAT-NONE FALSE FALSE 1 0 TRUE (/ img-width 2) (/ img-height 2) (* img-width 1.5) (* img-height 1.5))
 (define vignette-black (car (gimp-layer-new img img-width img-height RGBA-IMAGE "Black" 100 NORMAL-MODE)))
 (gimp-image-insert-layer img vignette-black vignette-group 0)
 (gimp-context-set-foreground '(0 0 0))
 (gimp-edit-blend vignette-black FG-TRANSPARENT-MODE NORMAL-MODE GRADIENT-RADIAL 100 0 REPEAT-NONE TRUE FALSE 1 0 TRUE (/ img-width 2) (/ img-height 2) img-width img-height)

        ;Refresh the display
        (gimp-displays-flush)
)

(script-fu-register "script-fu-lomo-effect" "Lomo Effect" "Apply a Lomo effect to visible image" "Skand Hurkat" "Skand Hurkat" "2012" "RGB*" SF-IMAGE "Image" 0 SF-DRAWABLE "Image to apply retro effect" 0)

(script-fu-menu-register "script-fu-lomo-effect" "<Image>/Filters/Artistic")

The script is registered under Filters > Artistic by the name "Lomo effect".

As always, I look forward to receiving some feedback. Take some time to hit "+1" or share it with your Facebook friends or twitter contacts. Or leave a comment below.

Popular Posts