Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

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!
 

Komentarze

0 nowych
tomimaki   6 #1 01.10.2010 02:25

Pierwszy raz o tym słyszę, ale jak widzę, efekt jest ciekawy.

Extraordinarykid   6 #2 01.10.2010 06:22

Ta Pani pozwie Cię w związku z "Prawami Autorskimi" ;p

Mam pytanie.. Czy to pierwsze zdjęcie też jest przerobione ?
Wygląda na zdjęcie zrobione starym aparatem ;-)
Jeżeli tak, to masz pracę ułatwioną :D

iluzion   5 #3 01.10.2010 07:15

@Extraordinarykid

"Lenna" to chyba najpopularniejszy sampel wykorzystywany w tego typu przykładach;)

http://en.wikipedia.org/wiki/Lenna

Zdjęcie nie było wcześniej przerabiane. Poniżej linki do mojej fotki przed i po uruchomieniu skryptu:

http://dl.dropbox.com/u/1010315/blog_dp/volvo.JPG
http://dl.dropbox.com/u/1010315/blog_dp/volvo_retro.JPG

Extraordinarykid   6 #4 01.10.2010 07:39

@ Co do zdjęcia - wszystko jasne, dzięki za wytłumaczenie ;-)

Podobny efekt do tego, który jest zastosowany na zdjęciu "Volvo", można uzyskać przy pomocy efektów w programie Picasa.

Kiedy próbuję użyć Twojego sposobu, przy drugiej komendzie wyskakuje mi Syntax error.
Co robię źle ?

Od razu mówię, że nie mam styczności z Pythonem, wykonuję to tylko w celach edukacyjnych ;-)

iluzion   5 #5 01.10.2010 07:54

@Extraordinarykid

A plik z maską umieściłeś w katalogu ze zdjęciami i skryptem? Pamiętaj, że plik mask256x256 z tego przykładu nie ma rozszerzenia (choć jest obrazem) z tego powodu, żeby skrypt nie nałożył na niego efektu retro. Ten skrypt działa wyłącznie na obrazach JPG. Można to łatwo zmodyfikować na inne formaty.

Sprawdź też sam skrypt (pamiętaj, że Python uwzględnia wcięcia). Najlepiej ściągnij po prostu te dwa pliki:

http://dl.dropbox.com/u/1010315/blog_dp/retro.py
http://dl.dropbox.com/u/1010315/blog_dp/mask256x256

Jeśli to nie pomoże to należy sprawdzić instalację Pythona i biblioteki PIL (biblioteka musi być przeznaczona dla danej wersji Pythona. Najnowszą wersją Pythona, dla którego udostępniona jest na stronie biblioteka PIL jest 2.6.6, dlatego ją właśnie sugeruję użyć).

  #6 01.10.2010 08:02

Nie wiem czy nazwa lomografia jest tutaj trafna. To co tutaj pokazałeś to zwykła winieta. Lomografia to zjawisko (jakby ktoś to teraz nazwał - społeczność), a nie konkretne efekty fotograficzne. Większość zdjęć lomo ma tak ogromną winietę, że jest ona zupełnie czarna (wynika ze zbyt krótkiej ogniskowej lub zbyt małego obrazu dawanego przez obiektyw w stosunku do klatki filmu).

Żeby nie było, że się tylko czepiam: Artykuł pod względem szkoleniowym OK, chociaż nie próbowałem, bo z Pythonem mi nie po drodze =D

Extraordinarykid   6 #7 01.10.2010 14:31

@iluzjon

Import biblioteki przebiega bez problemu.
Wersja bibliotek odpowiada wersji Python'a.

Można prosić o jakąś "krokową" instrukcję do zadziałania z tym ?
Bardzo chce !;D

iluzion   5 #8 01.10.2010 18:46

@fotoopo

Lomografię nazwałem w tekście nurtem w fotografii, więc potraktujmy to jako zjawisko, a lomo jako efekt.

"To co tutaj pokazałeś to zwykła winieta."

Efekt lomo jest "pod" sepią, stąd to wrażenie.

@Extraordinarykid

Nie wiem czemu nie działa. Jak Ci się uda uruchomić to daj znać. Chwilowo jestem offline, postaram się skontaktować (jabber dp?) później, może dojdziemy co jest przyczyną.