måndag 27 februari 2012

Ctrl Alt Delete för kropp och själ

Man vill så gärna att ölet Nils Oscar Ctrl Alt Delete ska vara, så där, jätte god. Så att man kan glida ner i fåtöljen där hemma och slå på Ctrl Alt Delete med Svenska Akademien på öronbedövande volym.

...och drömma.

Nils Oscar Ctrl Alt Delete:
http://www.systembolaget.se/Sok-dryck/Dryck/?varuNr=1437

...escape, escape, escape... ctrl alt delete.


tisdag 21 februari 2012

Photoshop: Att skapa en dramatisk bild av ett foto

Tänkte visa lite tips på hur man kan använda Photoshop eller liknande program för att skapa en dramatisk bild av ett enkelt foto.


Tänkte vi skulle göra om en sommarvy till en lite mörkare stormig bild där dag blir natt. Tanken är att förklara steg för steg vilka förändringar vi gör så att vi kan se hur bilden förändras och växer.


Vi börjar med en trevlig sommarvy, som redan i sig är relativt dramatisk med sina moln.


Jag gillar att arbeta med engelskspråkig version av mina program. Jag rekommenderar faktiskt att alla gör detta. Det är mycket lättare att söka på hjälp, det finns massvis med hjälp på engelska. Men jag kommer att försöka förklara alla funktioner med både sitt engelska och svenska namn.
Vi börjar med att lägga på ett lager med Nyans/Mättnad (Hue/Saturation). Jag väljer att sätta mättnaden på -55 för att att bort lite av färgerna. Det ger oss en bra grund.

I nästa steg lägger jag till ytterligare ett lager med Nyans/Mättnad (Hue/Saturation) och tar bort ytterligare lite mättnad men gör även bilden lite mörkare. Vi jobbar med två lager av samma "effekt" eftersom inga bilder har ett jämnt ljus. Himlen i detta fallet är betydligt ljusare än gräset, därför fokuserar vi på just himlen. Det gör inget om gräset blir för mörkt.


Med hjälp av övertoningsverktyget (gradient tool) väljer vi svart till transparent eller svart till vitt.


Vi applicerar sedan en toning över lagermasken (Layer mask) på vårt lager för Nyans/Mättnad (Hue/Saturation). Brytpunkten bör vara ungefär vid horisonten. Nu har vi skapat ett ännu mörkare intryck i bilden, samtidigt som vi kunnat lite av gräsets gröna. Bilden får ett bättre djup än om vi bara hade använt ett lager för Nyans/Mättnad (Hue/Saturation).


För att ge bilden lite extra krispighet ska vi arbeta med ett Högpass-filter (Highpass). Detta gör vi genom att först kopiera/duplicera vår originalbild och sedan applicera  Högpass -filter som vi hittar i Filter menyn under Annat (Other). Vi är nöjda när vi börjar se konturerna i den grå bilden.


Sedan väljer vi Täcka över (Overlay) i Blandningsläget (Blending Mode). Detta gör så att alla detaljer framhävs och ger en krispighet åt bilden.


För att ge bilden ytterligare lite djup så ska vi lägga till ett bildlager med Kurv inställning (Curves). Vi ska skapa en klassisk S-kurva som ofta används vid bearbetning av foto. Vad vi gör är att öka kontrasten och lätta upp ljuset en aning. Det skapar större skillnad mellan mörkt och ljust.


För att ge molnen som för tillfället kan tyckas vara lite för mätta och grå så ska vi lägga till eget ljus på dem. Detta kan vi enkelt göra genom att måla vita bollar/cirklar med vår Pensel (Brush tool). Jag använder en ganska stor pensel och gör enkla tryck.


Därefter ändrar vi Blandningsläget (Blending Mode) till att täcka över (overlay). Då smälter de båda lagren ihop och skapar en skön effekt av ljus. Bilden skulle nu mycket väl kunna vara en HDR bild, vi har ljus och djup som en bild egentligen aldrig kan ha naturligt.


Nu ska vi lägga till något som kan uppfattas som ljus eller regn. Detta gör vi genom att rita några bollar/cirklar med Pennan (Pencil tool) i två olika storlekar i vitt.


Sedan applicerar vi Rörelseoskärpa (Motion blur). Vi ställer in oskärpan diagonalt över bilden med bra till tagna mått.


Ett sista steg vi gör är att skapa en skugga i nederkanten av bilden för att skapa ytterligare djup. Detta gör vi genom att skapa en Övertoning (Gradient tool) från svart till transparent över ungefär 1/3 av bilden.
Sedan ändrar vi ännu en gång Blandningsläget (Blending Mode) till att täcka över (overlay).

Man kan självklart göra mycket mer. Det är bara fantasin som sätter gränserna. Vad jag velat visa och vad jag hoppas är att inspirera till lite nya tekniker för att bearbeta era bilder.

I min bild valde jag även att lägga till två stycken månar, som självklart inte finns i verkligheten.

Så här blev det slutgiltiga resultatet:


tisdag 14 februari 2012

Varför blogga?

Jag har många gånger funderat på att starta en blogg. Men aldrig riktigt gjort det, trotts att jag arbetat med webben i nästan sex år och innan dess varit hängivet aktiv sedan jag fick min första dator vid 10 år ålder eller något.

Många inlägg jag skriver är och kommer nog tendera att vara "Låt mig förklara..."-inlägg. Så kallat guider eller "tutorials" på engelska. Nivån på dessa typer av inlägg kommer och är redan på olika nivåer av svårighet. Vissa berör ganska enkla saker, i alla fall om man är intresserad av området. Men det är likväl viktigt för nybörjare.

När jag började programmera/koda, så fanns det nästan ingen information att få tag på som var skrivit på svenska. Istället fick jag redan vid ganska tidig ålder ta mig genom relativ komplicerade texter som beskrev saker jag inte redan kunde. Därför väljer jag att skriva många av de saker jag skriver.

Ibland kan det å andra sidan beröra saker som jag själv kanske precis lärt mig, eller fått utvecklad kunskap om. Då fungerar det snarare som en inlärningsprocess. Kan jag förklara något för någon annan, då har jag lärt mig det hela tillräckligt bra.

Denna typ av inlägg, som egentligen inte berör något annat än bloggen kallar jag BloggMeta.

Hoppas någon finner ett intresse.

PHP: Vad är en &referens variabel?

När man programmerar, så är det mycket man klarar sig utan. Detta eftersom det ofta finns mer än ett sätt att  lösa flera olika problem. Man kan även ofta få samma resultat på olika sätt.

Ett enkelt exempel på en sak som man lätt kan klara sig utan är referens variabler. Kanske för att man aldrig tagit sig tiden att riktigt förstå vad det är, eller hur det fungerar.

Låt oss titta på följande exempel:


$a = 1; 
$b = $a;


print($a . ' = ' . $b); //Skriver ut 1 = 1


$b = 2;


print($a . ' = ' . $b); //Skriver ut 1 = 2



Vad som händer är ganska självklart. Vi skapar först en variabel A och ger denna värdet 1, sedan skapar vi variabel B och ger den värdet av A. A och B innehåller samma värde och skriver därför ut samma värde; 1 = 1. Sedan ändrar vi värdet på B till 2. A är fortfarande 1, medan B nu är 2 och utskriften blir  1 = 2.


Låt oss titta på ett nytt exempel:


$a = 1; 
$b = &$a;


print($a . ' = ' . $b); //Skriver ut 1 = 1


$b = 2;


print($a . ' = ' . $b); //Skriver ut 1 = 2


Vi gör samma sak som i första exemplet. Vi skapar A och ger det värdet 1, sedan skapar vi B och ger det värdet av A, eller? Kanske lägger den uppmärksamma märke till skillnaden här; Vi har lagt till ett &-tecken framför A. Vad betyder detta? Låt oss gå vidare i exemplet...

Utskriften vid detta läget blir 1 = 1 precis som tidigare. Nu ändrar vi värdet i B till 2 och gör en ny utskrift men till skillnad från första exemplet så får vi nu ut samma värde av både A och B; 2 = 2.

Varför? Jo, vi skapade en referens till A när vi skapade B istället för att bara kopiera dess värde. A är egentligen den enda variabeln som innehåller ett värde, medan B bara fungerar som en länk till A.

Vad vi gör med A påverkar B och tvärt om. Men varför är detta väsentligt?



Förutom att vi faktiskt inte skapar en kopia och tar upp minne, så finns det andra egenskaper av det hela som kanske är mer märkbara.

Låt oss kolla på ett exempel till som involverar en funktion:


$a = 1;


function a($a){

$a = 2;

print($a);

}


print($a);  //Skriver ut 1
a($a);  //Skriver ut 2
print($a); //Skriver ut 1

Inga konstigheter, eller hur? Vi skapar två variabler och ger dess värdet 1, vi skriver ut dessa och värdet som visas är 1 för båda. Vi kör vår funktion som först läser in våra värden från de båda variablerna och sedan ändrar dessa innan de skrivs ut. Nya värdet är 2 och detta är även värdet som skrivs ut.
Slutligen skriver vi ut våra värden ännu en gång utanför vår funktion och värdena är ännu en gång 1. Detta beror på att alla variabler inom funktionen enbart existerar inom funktionen, och alla förändringar lika så. Vi kopierar in värdena från våra variabler och ändrar på dessa kopior. När vi sedan lämnar funktionen, så återgår vi till våra ursprungliga variabler och dess värden.

Så, låt oss testa med referens variabler:


$a = 1;


function a(&$a){

$a = 2;

print($a);

}


print($a);  //Skriver ut 1
a($a);  //Skriver ut 2
print($a); //Skriver ut 2

Allt är precis som i tidigare exempel, men vi har gjort om variablerna som tas emot av funktionen till referenser. Så istället för att de kopieras till nya variabler så arbetar vi mot de ursprungliga variablerna utanför funktionen. Alla förändringar i funktionen påverkar även variablerna utanför.

Detta fungerar såklart inte enbart för variabler utan även vektorer (arrays) och objekt.

Jag hoppas i och med detta att alla fått en mer grundlig förståelse för referens variabler i PHP.