Stikkordarkiv: Bilder

X/52

52 uker – 52 bilder.

Det startet som et lite prosjekt mellom meg og Geir Ertzgaard. Vi skulle ta et bilde i uken året gjennom. For å utfordre oss selv, og utvikle oss selv. Og første uken ble det lagt ut to bilder med felles tema “Mørketid (The Dark Season)”. Hjulene var i gang.

Vi er nå inne i uke 4, og flere har meldt seg på. Vi er i skrivende stund 6 deltagere, og håper på mange flere. Denne ukens tema er «City Lights» – jeg har enda ikke tenkt ut hvordan jeg skal løse denne, men jeg får vel besøke storbyen da.

Mens det absolutt er moro å utfordre seg selv med et nytt tema hver uke, er det også veldig moro å se hvordan andre har løst og tolket oppgaven. Vi er veldig forskjellige. Det gjør prosjektet desto mer spennende å følge med på, og ikke minst delta i.

Jeg har klart å holde et bilde i uken de 3 første ukene, og skal nok klare det gjennom hele året. Det gjelder å planlegge.

Har du lyst til å følge med, og kanskje også delta selv? Besøk X/52 – Et bilde i uka . Som en ekstra gulrot (i tillegg til moroa) kan vi også friste med en fotobok hvor de beste bildene blir samlet!

52 bilder

Like før fjorårets nyttår satte jeg meg et mål: jeg skulle ta minimum et bilde hver dag året gjennom. Og det skulle være gjennomtenkte bilder med en viss kvalitet over seg. Altså ikke snapshots. 5 dager inni det nye året kunne jeg konkludere at jeg ikke hadde klart det.

Et mål må være gjennomførbart for at det skal være noe vits å ha det mener jeg. Et bilde om dagen burde ikke være noe stort problem. Det er det heller ikke. Men et godt bilde om dagen kan være verre. Og det kan jo ikke være samme bilde heller (med mindre det er nettopp det prosjektet er). Spesielt kombinert med full jobb, småbarn og nordiske sesonger. Å starte et slikt prosjekt over nyttår er en vanskelig start for et prosjekt som handler om å fange lys.

I år er prosjektet derfor endret. På den ene siden skal det produseres færre bilder, men jeg tror kravene til bildene er større.

Årets prosjekt er enkelt: Det skal publiseres et bilde for hver uke gjennom 2011. Med med har jeg Geir Ertzgaard, og alle som måtte ha lyst.

Reglene er omtrent som følger:

  1. Hver uke bestemmes et tema/stikkord. Bildet for uken skal være knyttet til dette.
  2. Bildet skal være tatt samme uke. Vi følger kalenderukene.
  3. Det tillates noen avvik i løpet av året for å gi rom for ferier, sykdom, annet. Om mulig bør det da komme et forsinket bilde.
  4. Alle som vil være med er velkomne.

Ettersom prosjektet enda er i startgropa er ikke alt ferdig definert, så det er bare å komme med forslag. Det kan også være vi oppretter et eget domene for prosjektet for å knytte det sammen, men mange vil nok likevel foretrekke å ha selve bildet på sin egen side.

Første uke var tema «Mørke» – på engelsk: «Darkness». Her er resultatet:

Geir: The Dark Season Yngve: Walking in Darkness

Denne uken er tema «Mønster» – på engelsk: «Pattern». Jeg gleder meg til å finne mitt bidrag, og gleder meg enda mer til å se hva andre finner på.

Oppdatering: Jeg har opprettet en egen side for prosjektet 52 bilder. Her vil jeg oppdatere de som er med på prosjektet og det vil være en oversikt over ukens tema.

Hotlinkere er som oftest fjortiser

Jeg skrev tidligere en liten innføring i hvordan jeg har stoppet hotlinkere fra å vise bilder liggende på bloggen min. Der beskrev jeg hvordan jeg brukte .htaccess filen for å hindre de jeg la til i listen. Dette fungerer glimrende og har egentlig ingen store ulemper. Jeg oppnår det jeg vil, som altså er å hindre uvedkommende i å stjele båndbredden min.

Men det kan bli så mye bedre. Jeg savner nemlig et par ting. Nemlig å se hvilke som blir fanget opp er tungvint, og ikke minst kunne kontrollere tilgang raskt og effektivt basert på data i sanntid.

Eneste måten jeg kan se hvem som snylter på er nemlig å gå gjennom logger, for så å plukke ut de som synder mest (eller bruke fantastisk lang tid på å lete i loggene…). Og ettersom jeg ønsker å kunne se hvorvidt tiltaket virker (eller bare bidrar til gratis reklame for meg) er det ingen god løsning å lete i logger som kun viser fordeling på måned.

Men det var før. Nå har jeg gjort noen små endringer som fungerer enda bedre. Kan det fungere bedre enn glimrende sier du? Javisst. Følg med.

I den nye versjonen har jeg byttet ut loggfilen med et par tabeller i databasen min. En tabell styrer tilgang og en er for logg. htacces filen er endret til å sende alle forespørsler som ikke er fra eget domene eller et fåtall andre, deriblant bildesøk fra google, til et php script som tar seg kontroll og visning av bilder. Alt som som routes til scriptet logges med nødvendig info.

Tabellen som styrer tilgang har et flagg som forteller om det aktuelle domenet skal få tilgang til bildene. Om domenet ikke ligger i tabellen fra før blir det lagt til, med tilgang. Ønsker jeg å fjerne eller gi tilgang kan jeg når som helst endre dette. Verdien fra denne tabellen brukes for å vise det riktige bildet eller denne snasne dama.

Tabellen for logging inneholder hver eneste forespørsel som blir gjort med henvisende url, bildets url, domeneid koblet til tilgangstabellen, og hvorvidt tilgang er gitt. Dermed har jeg mulighet til å trekke ut det jeg trenger av statistikk. Og statistikk liker jeg, så det viser jeg med all data jeg har tilgengelig. Jeg har derfor statistikk fordelt på domener, bilder, tilgang, tidspunkt, i topplister og siste treff. IP og denslags logger jeg ikke.

Og hvis noen lurer på overskriften kan jeg fortelle at blogg.no står for brorparten av hotlinkere mot denne bloggen, sammen med et par forum hvor brukere har hotlinket avatar bildet sitt fra bloggen min. De bytter nok ganske snart…

Se forøvrig mer om hot linking her.

Oppdatering: Koden for php scriptet er lagt ut. Husk å endre filen til php, samt legge inn server, brukernavn, passord og database. Jeg benytter samme database som for WordPress, men med annet prefix for å skille tilhørighet for tabellene fra hverandre.

PHP (scriptet i filen du finner over):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
< ?php
$hotlink['hotlinkimage'] = 'donthotlink.jpg';
 
$hotlink['url'] = '';
if(!empty($_GET['url'])) {
	$hotlink['url'] = $_GET['url'];
 
 
	$hotlink['ref_domain'] = '';
	$hotlink['referrer'] = '';
	$hotlink['fullurl'] = 'http://'.$_SERVER['HTTP_HOST'].'/'.$hotlink['url'];
 
	// mod_rewrite should have already established that it is a hot-link.
	// This is a double-check. We need to capture the referrer, anyway.
 
	if (!empty($_SERVER['HTTP_REFERER'])) {
		$hotlink['referrer'] = $_SERVER['HTTP_REFERER'];
		$hotlink['ref_domain'] = substr($hotlink['referrer'], 7, strpos($hotlink['referrer'], "/", 7) - 7);
	}
 
	// splitting the referrer into a domain part, saves us searching for multiple variations.
	// so long as your host name appears somewhere in the domain part, it's not a hot-link.
 
	if (!stristr($hotlink['ref_domain'], $_SERVER['HTTP_HOST'])) {
 
		$domain = getDomain($hotlink['ref_domain']);
 
		if($domain->allow){
			log_hotlink_to_db($domain, $hotlink['referrer'], $hotlink['fullurl'], 1);
			serveImage('../'.$hotlink['url']);
		}
		else{
			log_hotlink_to_db($domain, $hotlink['referrer'], $hotlink['fullurl'], 0);
			serveImage($hotlink['hotlinkimage']);
		}
	}else{
		serveImage($hotlink['url']);
	}
 
}else{
	// No url? Redirect them to the main site.
	header( "Location: http://" . $_SERVER['HTTP_HOST'] );
}

En enkel klasse for domene. Kunne godt laget en klasse for referrer også, men er ikke nødvendig.

46
47
48
49
50
51
// Simple class for domain
class Domain{
	public $id;
	public $domain;
	public $allow;
}

Logge til db.

53
54
55
56
57
58
59
60
//log the attempt to db
function log_hotlink_to_db($domain, $referrer, $url, $allowed){
	$db_connection = getDBConnection();
	$statement = $db_connection->prepare("INSERT INTO hotlink_log (domain_id, referrer,url,allow) VALUES (?,?,?,?)") or die ("Failed to prepare the statement!");
	$statement->bind_param("issi", $domain->id, $referrer,$url,$allowed);
	$statement->execute();
	$statement->close();
}

Et par funksjoner for å håndtere domener.

62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
function getDomain($ref_domain){
	if (preg_match("/^www./i",$ref_domain)){
		// WWW. is deprecated anyway...
		$ref_domain = preg_replace("/^www./i", "", $ref_domain);
	}
 
	$domain = new Domain();
	$domain->id = 0;
	$domain->domain = $ref_domain;
	$domain = checkDomain($domain);
	if($domain->id == 0){
		insertNewDomain($domain);
		$domain = checkDomain($domain);
	}
	return $domain;
}
 
function checkDomain($domain){
	$db_connection = getDBConnection();
	$statement = $db_connection->prepare("SELECT id, allow FROM hotlink_access WHERE domain = ?") or die ("Failed to prepare the statement!");
	$statement->bind_param("s", $domain->domain);
	$statement->execute();
	$statement->bind_result($id, $allow);
	if($statement->fetch()){
		$domain->id = $id;
		$domain->allow = $allow;
	}
	$statement->close();
 
	return $domain;
}
 
function insertNewDomain($domain){
	$db_connection = getDBConnection();
	$statement = $db_connection->prepare("INSERT INTO hotlink_access (domain,allow) VALUES (?,1)") or die ("Failed to prepared the statement!");
	$statement->bind_param("s", $domain->domain);
	$statement->execute();
	//$statement->affected_rows
 
	$statement->close();
}

Vær så god, her har du et bilde. Håper du blir fornøyd.

104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
function serveImage($url){
	if (!empty($url) and file_exists($url)) {
		$hotlink['img_type'] = end(explode('.', $url));
		if (strcasecmp($hotlink['img_type'],'png') == 0 ){
			$hotlink['img'] = imagecreatefrompng($url);
			imagesavealpha($hotlink['img'],true);
		} elseif (strcasecmp($hotlink['img_type'],'jpg') == 0 || strcasecmp($hotlink['img_type'],'jpeg') == 0) {
			$hotlink['img'] = imagecreatefromjpeg($url);
		} elseif (strcasecmp($hotlink['img_type'],'gif') == 0) {
			$hotlink['img'] = imagecreatefromgif($url);
		} else {
			trigger_error("HOTLINK - Image $url is of unknown type", E_USER_ERROR);
		}
		//TODO Other file types?
 
	} else {
		// Log image not found!
		trigger_error("HOTLINK - Image $url was not found", E_USER_ERROR);
	}
 
	// send the image to the browser..
	if ($hotlink['img_type'] == 'png') {
		header('Content-type: image/png');
		imagepng($hotlink['img']) or die("there was an error. sorry about that...");
	} else {
		header('Content-type: image/jpg');
		imagejpeg($hotlink['img']) or die("there was an error. sorry about that...");
	}
	imagedestroy($hotlink['img']);
}

Skaff en connection til db. Det er her data om server, brukernavn, passord og database skal inn.

135
136
137
138
139
140
function getDBConnection(){
	$db_connection = new mysqli("server", "username", "password", "database") or die ("Failed to obtain connection to db!");
	return $db_connection;
}
 
?>

Databasetruktur (SQL) er som følger:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE TABLE hotlink_access (
  id INT(11) NOT NULL AUTO_INCREMENT,
  DOMAIN VARCHAR(50) NOT NULL,
  allow INT(11) NOT NULL,
  PRIMARY KEY  (id)
)
 
CREATE TABLE hotlink_log (
  id INT(11) NOT NULL AUTO_INCREMENT,
  domain_id INT(11) NOT NULL,
  referrer VARCHAR(200) NOT NULL,
  url VARCHAR(100) NOT NULL,
  allow tinyint(1) NOT NULL,
  TIME TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY  (id)
)

Egentlig er det også en timestamp i access tabellen også, men den trengs strengt tatt ikke da samme data ligger i loggtabellen.

Til slutt den delen som gjør selve redirekten: .htaccess filen:

1
2
3
4
5
6
7
8
# BEGIN Hotlink stopper
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?xmasb\. [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://((.+)\.)?google\.(.+imgres) [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://((.+)\.)?google\.(.+reader) [NC]
RewriteRule ^(.*)\.(gif|jpe?g|png)$ http://%{HTTP_HOST}/hotlink/hotlink.php?url=$1.$2 [R,NC,L]
# END Hotlink stopper

Alle request som ikke er direkte på bildene (gif|jpe?g|png), via xmasb, google’s bildesøk eller google reader blir sendt til scriptet. Scriptet sørger for resten. Her kan alle tillatte domener legges inn, så det ikke brukes unødig prossesering på tillatte domener. Eksempel på andre domener som kanskje bør ligge her er RSS lesere (Google, Bloglines, Netvibes f.eks) og andre sider for bildesøk. Det fine med denne fremgangsmåten er at det er lett å oppdage disse underveis, uten at de er utestengt i mellomtiden.

Det er lett å bare legge inn Google som tillatt domene i htaccess filen, men husk at det også eksisterer noe som heter sites.google.com. Scriptet får et par treff om dagen derfra.

Oppdatering 2: Har gjort en liten endring til på scriptet mitt. Ettersom blant annet blogg.no er kraftig overrepresentert i loggene er det like greit å sperre de ute med en gang. Jeg kunne selvsagt gjort dette via htaccess filen, men får å få med loggingen tar jeg de via scriptet likevel. For å gjøre dette har jeg gjort følgende endring i insertNewDomain funksjonen:

138
139
140
141
142
143
144
145
146
147
148
149
150
function insertNewDomain($domain, $allow = 1){
	global $hotlink;
	if(anyNeedleInString($domain->domain, $hotlink['blockedBaseDomains'])){
		$allow = 0;
	}
	$db_connection = getDBConnection();
	$statement = $db_connection->prepare("INSERT INTO hotlinkaccess (domain,allow) VALUES (?,?)") or die ("Failed to prepared the statement!");
	$statement->bind_param("si", $domain->domain, $allow);
	$statement->execute();
	//$statement->affected_rows
 
	$statement->close();
}

AnyNeedleInString ser slik ut:

187
188
189
190
191
192
193
194
function anyNeedleInString($haystack, $needle){
	foreach($needle as $key => $search_needle) { 
		if(stristr($haystack, $search_needle)) { 
			return true;
		}
	}
	return false;
}

Og så er det bare å definere en array som inneholder de domener man ikke vil ha med:

3
$hotlink['blockedBaseDomains'] = array('blogg.no', 'nettby.no');

Her illustrert med blogg.no og nettby.no. Dermed slipper jeg å håndtere de som tilhører diverse plattformer. Smart, ikke sant?

Hvordan jeg stopper hotlinkere – og får gratis reklame for xmasb.com

En gang i blant sjekker jeg statistikk for bloggen. Etter som årene har gått (og hyppigheten på bloggingen har gått noe ned) har jeg sluttet å lese statistikk annen hver dag. Men det hender jeg sjekker litt, mest for å se etter endring i mønsteret, og hvilke poster og sider som mottar mest trafikk. En sjelden gang iblant går jeg litt dypere til verks og sjekker da hvilke ressurser på serveren som får mest trafikk, sånn som bilder.

Når jeg gjorde dette i går fant jeg ut, ikke overraskende, at det er mye trafikk fra diverse nettsider som henter bilder fra meg. Begrepet hotlinking har jeg vært innom før, for snart tre år siden satte jeg i gang tiltak. Men som så mye annet krever det en viss vedlikehold, så det var på tide å gjøre noen grep igjen. Etter tre år skulle det vise seg å være mange som stjeler båndbredde av meg.

Mens jeg tidligere har tatt i bruk et bilde som forteller at det er slemt å hotlinke syntes jeg dette var en gyllen mulighet for to ting: å spre reklame for bloggen min (selv om jeg har cirka null kontroll over hvor den blir vist), og en mulighet for å være litt morsom på andres bekostning. Sistnevnte fikk umiddelbart høyest prioritet av åpenbare grunner.

Her er et bilde jeg tidligere har brukt for de som hotlinker fra meg: Hotlink Text

Det har jo absolutt gjort nytten sin. De færreste ønsker å vise det fremfor det de egentlig ville ha, som kanskje var en søt valp eller et juletre. Så de bytter til noe annet, eller kopierer bildet fra meg. Å kopiere bilder fra bloggene til andre er et tema vi ikke trenger å gå inn på nå. Så lenge det ikke er bilder jeg selv har tatt/laget tar jeg det uansett ikke så tungt.

Fremgangsmåten for å hindre hotlinkere var omtrent som forrige gang, men med en liten tvist: nytt bilde og logging av misbrukere. Loggingen er ikke så viktig i seg selv, og jeg kommer nok til å endre litt hvordan den virker også, men det kan være grei info å ha når jeg vil vite omfanget av hotlinking.

Det morsomme er bildet. Nedenfor følger et par eksempler på bilder som ofte blir hotlinket til på xmasb.com:

Jeg kan godt forstå at disse bildene kan være attraktive å bruke. Men jeg synes da bildet jeg serverer i stedet er mye morsommere. Det ser slik ut:

Don't hotlink xmasb.com!

Nå vil det ikke spare noe særlig på båndbredden i seg selv ved å servere et annet bilde, men de fleste velger å ikke bruke dette bildet av en eller annen grunn… Jeg kunne servert for eksempel «403 Forbidden» til requestet, og dermed spart hele båndbredden, men det er jo ikke noe moro. Og det gir meg litt ekstra reklame også. I oktober hadde bloggen like over 10000 visninger av bilder fra xmasb.com på andre domener. De fleste av sidene viser nå forrige viste bilde, eller har byttet.

Så hvordan har jeg egentlig gjort dette? Det er ikke vanskelig. Akkurat som forrige gang endret jeg .htaccess filen for å få effekten jeg ville ha. I slutten av denne filen la jeg til følgende:

BEGIN Hotlink stopper

RewriteEngine on RewriteCond %{HTTP_REFERER} ^(.+.)?blogg.no/ [NC,OR] RewriteCond %{HTTP_REFERER} ^(.+.)?blogspot.com/ [NC,OR] RewriteCond %{HTTP_REFERER} ^(.+.)?clublife.no/ [NC,OR] RewriteCond %{HTTP_REFERER} ^(.+.)?livejournal.com/ [NC,OR] RewriteCond %{HTTP_REFERER} ^(.+.)?myspace.com/ [NC,OR] RewriteCond %{HTTP_REFERER} ^(.+.)?nettby.no/ [NC,OR] RewriteCond %{HTTP_REFERER} ^(.+.)?trykker.com/ [NC,OR] RewriteCond %{HTTP_REFERER} ^(.+.)?wordpress.com/ RewriteRule ^(.*).(gif|jpe?g|png)$ http://%{HTTP_HOST}/hotlink/hotlink.php?url=$1.$2 [R,NC,L]

END Hotlink stopper

For bedre lesbarhet har jeg fjernet de fleste fra listen. Kort fortalt gjør denne lille snutten at alle forsøk på å vise bilder fra oppgitte domener/sider fører til et kall av hotlink.php, som igjen serverer dama over og logger requestet. Jeg logger da url for siden som kaller, IP for besøkende av siden, tidspunkt og hvilket bilde som er forsøkt hotlinket. Mest sannsynlig kommer jeg også til å endre oppsettet senere til også å logge de som får lov til å vise bilder, for å kunne få en oversikt over disse og eventuelt lett blokkere flere.

Dersom logging ikke trengs eller er ønskelig kan det lett byttes ut med et bilde istedet for php script, men da er det viktig å legge til en linje som tillater bruk av det ene bildet hos de som egentlig ikke skal kunne se bilder fra bloggen. Følgende linje kan da legges inn rett før Rewriterule:

RewriteCond %{REQUEST_URI} !http://%{HTTP_HOST}/wp-content/uploads/hotlink.jpg

Denne tillater visning av bildet hotlink.jpg. Husk også å legge til en OR for siste i listen før denne.

Tidligere har jeg forsøkt å stoppe alle requests bortsett fra et knippe jeg tillatter, men dette har ikke fungert så godt som håpet. Problemet er blant annet lesere av feeden. Det er ikke noe problem å tillate Google, men hva med alle andre? Hvor mange og hvilke er det? Jeg har ihvertfall ikke en god oversikt. Tidligere forsøkt på dette har bare ført til frustrasjon da bilder i feeden hos for eksempel en som bruker Outlook som leser er vanskelig å ta høyde for. Stikkordet med løsningen jeg har valgt må være «godt nok». Det krever en viss vedlikehold, men ikke verre enn at jeg går inn i loggen en gang iblant og luker ut de verste.

Som oftest er det ikke de bloggene som har to besøkende om dagen som er problemet, men forum og andre sider med høy aktivitet. I mitt tilfelle har jeg nok av båndbredde foreløpig, så da kan jeg godt servere et annet bilde istedet. Men jeg har sørget for at bildet er komprimert så mye som mulig likevel. Dersom du har tenkt å bruke tekst kan det være verdt å sjekke forskjellen i størrelse mellom flere formater (gif/jpg først og fremst).

Et siste tips. Når du tester om dette virker, typisk ved å se om bildet vises eller ikke på den siden som har hotlinket, vil gjerne nettleseren bruke det bildet du allerede har i cahe. De fleste nettlesere kan tvinges til å hente på ny ved å trykke ctrl-F5 eller tilsvarende.

Oppdatering: Jeg har gjort dette mye smidigere ved hjelp av litt enkel koding.

En bildetyv?

Dette er merkelig. Tidligere idag fikk jeg en melding på Flickr fra en person som hadde funnet navnet mitt i et jpg bilde på en side. Bildet var av et lyn, og hadde mitt navn skjult i EXIF infoen. Jeg har nemlig satt opp kameraet mitt til å legge inn kontaktinfo på alle bilder jeg tar under «user comment» i EXIF infoen som ligger i bildene. Ettersom infoen han hadde funnet var nøyaktig den teksten jeg tidligere hadde satt opp regnet jeg derfor med at det var snakk om noen som tok æren for et bilde jeg hadde tatt. Men der tok jeg feil. Jeg har nemlig ikke tatt bildet det er snakk om.

Bildet jeg fikk link til kunne minne om bilder jeg selv har tatt, men jeg kunne fort fastslå at dette er en annen persons verk. Jeg kikket likevel på EXIf informasjonen og kunne se selv at bildet riktignok hadde mitt navn i seg. I tillegg til resten av informasjonen som også passer med mitt utstyr. Dette var virkelig merkelig.

For å dobbeltsjekke om det virkelig kunne vært meg selv som hadde tatt bildet, åpnet jeg arkivet og bladde meg frem til tidspunktet bildet skal være tatt på. Jeg fant et bilde av et lyn på det nøyaktige tidspunktet som bildet på nettsiden skulle være tatt. Resten av EXIF passet også helt perfekt. Men bildet var ikke det samme.

Jeg har nå sendt en mail til innehaveren av galleriet, hvor jeg spør om en forklaring på fenomentet. Jeg er spent på svaret, om jeg får noe svar i det hele tatt. Jeg har mine tvil. Bildet det er snakk om kan du finne her. Altså ikke bildet som jeg har tatt, men med mine metadata. En rask titt på galleriet til denne brukeren kan tyde på at ikke alle bildene er tatt av samme person. Ikke bare fordi motivene er såpass forskjellige, men fordi bildene er tatt med mye forskjellig utstyr. Men vi vet jo allerede at vi ikke kan stole på EXIF data fra dette galleriet…

Bildet jeg har tatt «samtidig» ser du her. Klikk på bildet for å komme til bildet på flickr. Lightning