Styl retro

Przeglądając jakiś czas temu informacje na temat biblioteki PIL (Python Imaging Library) trafiłem na dwa ciekawe opisy. Pierwszy z nich dotyczy efektu Lomo(1), a drugi symulacji komputerowej sepii(2). Możnaby pójść o krok dalej i połączyć te dwa efekty w celu osiągnięcia fotografii w stylu retro.

Zapewne ktoś zapyta po co? Cytując słowa twórcy jądra Linux - Linusa Torvaldsa - odpowiem: Just for Fun. Można podobny efekt osiągnąć w Gimpie lub innym programie graficznym. Ale co w przypadku gdy będziemy mieli kilkaset zdjęć do "przeróbki"? Są na to sposoby... pluginy, skrypty w programach graficznych itd.

Poniżej opiszę jak można to wykonać przy pomocy biblioteki PIL.

Naturalny efekt Lomo (jakże dziś przez niektórych pożądany) jest wynikiem niedoskonałości optyki niektórych aparatów analogowych. Nazwa wywodzi się od radzieckiej konstrukcji Łomo. Lomografia stała się wręcz pewnym stylem, nurtem w fotografii. Zrodziła się na początku lat dziewięćdziesiątych, podczas wycieczki austriackich studentów do Pragi. Odkryli oni w jednym z komisów radziecki aparat fotograficzny. Po wywołaniu zdjęć, stwierdzili, że odznaczają się zupełnie inną, nieprzystającą do współczesności jakością i walorami artystycznymi (wiki).

Dziś efekt lomo osiąga się na dwa sposoby: analogowo i cyfrowo. Wśród zwolenników lomografii największą popularnością cieszą się dwie konstrukcje aparatów: małoobrazkowy LC-A+ oraz średnioformatowa Holga.

Efekty uzyskane przez te aparaty można obejrzeć np. na stronie flickr.com wpisując nazwy wyżej wymienionych aparatów.

Teraz spróbujmy połączyć efekt lomo z kolorystyką sepii w celu uzyskania fotografii w stylu retro. Załóżmy, że chcemy osiągnąć ten efekt dla wszystkich zdjęć znajdujących się w katalogu. W tym celu będziemy potrzebowali skrypt napisany w Pythonie z wykorzystaniem biblioteki PIL oraz maskę stanowiącą winietę (wadę obrazu polegającą na niedoświetleniu brzegów kadru).

UWAGA: Po uruchomieniu skryptu na wszystkie fotografie zostanie nałożony efekt retro. Należy wykonać kopię zdjęć lub zmodyfikować skrypt tak, aby zmieniał nazwy zapisywanych plików.

Przepis na wehikuł czasu:

- Python (najlepiej 2.6.6)
- PIL 1.1.7
- mask256x256 - maska stanowiąca winietę
- retro.py - skrypt retro.py

Skrócony opis skryptu:

Zaimportowanie niezbędnych bibliotek do obsługi plików i operacji na fotografiach:

import os, glob
from PIL import Image, ImageOps, ImageEnhance, ImageColor

Funkcja odpowiedzialna za efekt Lomo:

def lomoize(image, darkness, saturation)

Funkcja pomocnicza dla osiągnięcia efektu sepii:

def make_linear_ramp(white)

Zastosowanie efektu do wszystkich plików w katalogu.

Wehikuł czasu uruchomiony, proszę czekać...

Pliki retro.py i mask256x256 umieszczamy w katalogu z fotografiami, a następnie uruchamiamy skrypt.

Zadanie domowe: Zrealizować przy pomocy PIL winietę tak, aby plik z maską nie był potrzebny.

Enjoy!