M-am lovit în ultimul timp de o problemă. Eu îmi țin pozele pe picasa. Nu alea cu gagici dezbrăcate. Din când în când mă joc de-a fotograful și vreau ca pozele să le public și pe blog. Nu-mi place galeria furnizată de picasa sau de alte servicii. Așa că mi-am creat una simplă folosind lightbox JS. Ca să nu stau să scriu manual 10.000 de ancore, am creat un script php să facă asta și să-mi genereze codul html de care am nevoie.
Scriptul de mai jos mă ajută să selectez albumul pentru care doresc o galerie foto.
<?php
echo "<HTML><HEAD>";
echo "<title> Picasa imagini</title>";
echo "</HEAD><BODY>";
$xdoc=new DomDocument;
//XML-ul are formatul 'http://picasaweb.google.com/data/feed/api/user/USERID'
$xmlpath='http://picasaweb.google.com/data/feed/api/user/mastaleru.rafael';
$xdoc->Load($xmlpath);
echo '<form name="formular" action="galerie.php" method="post">';
echo '<select name="menu">';
$numaralbume=$xdoc->getElementsByTagName('totalResults')->item(0);
echo ($numaralbume->nodeValue);
for($i=0; $i<$numaralbume->nodeValue; $i++){
$album=$xdoc->getElementsByTagName('entry')->item($i);
$albumName=$album->getElementsByTagName('link')->item(0);
/*creez un comboBox pentru selectarea albumului
pentru fiecare optiune adaug si id-ul unic al albumului
pentru o procesare ulterioara mai simpla*/
echo "<option>";
echo ($album->getElementsByTagName('title')->item(0)->nodeValue."**");
echo($albumName->getAttributeNode('href')->value);
echo("</option>");
}
echo '</select>';
echo "<input name='Trimite' type='submit' id='Trimite' value='Trimite'>";
echo '</form>';
echo "</BODY>";
?>
Mai departe, punem mâna pe fiecare poză în parte, și construim href/src-ul pentru imaginea normala/thumbnail.
<?php
//pastrez path-ul xml-ului ce va fi procesat.
$cale=(string)strstr($_POST["menu"],"**");
$cale=substr($cale,2);
$xdoc= new DomDocument;
$xdoc->Load($cale);
//css-ul galeriei voastre.
echo("<style type='text/css'>
.galerie {margin:auto;width:33%;float:left;}</style>");
//numarul de fotografii din album
$numphotos=$xdoc->getElementsByTagName('numphotos')->item(0);
for($i=0 ;$i<$numphotos->nodeValue; $i++){
$imagine=$xdoc->getElementsByTagName('entry')->item($i);
$photo=$imagine->getElementsByTagName('content')->item(0);
$imagine1= $photo->getAttributeNode('src')->value;
$urlphoto=strrev($imagine1);
for($j=0; $j<strlen($urlphoto); $j++)
if($urlphoto[$j]=='/'){
/*
**modificam url-ul implicit in functie de ce avem nevoie
**Picasa ofera imaginile la dimensiunea dorita
**s128 si s800 reprezinta width-ul fotografiilor
**pentru thumb si imaginea normala
**am inversat stringul pentru a-mi fi mai usor de modificat.
*/
$normalsize=substr($urlphoto,0,$j)."/008s/".substr($urlphoto,$j+1);
$thumbnail=substr($urlphoto,0,$j)."/821s/".substr($urlphoto,$j+1);
break;
}
$normalsize=strrev($normalsize);
$thumbnail=strrev($thumbnail);
//partea html ce este customizabila
echo "<a class='galerie' href='".$normalsize.
"' rel='lightbox'><img src='".$thumbnail."'/></a>";
}
?>
Acum, pentru a nu stresa un server(se știe ca DOM-ul mănâncă resurse), copiază html-ul generat și lipește-l unde ai nevoie.
28.8.10
//
Categorii:
Projects
//
0
comentarii
//
0 comentarii to "Galerie foto folosind imagini de pe Picasa"
Linkuri utile
Categorii
- Am ceva de spus (40)
- Amintiri (7)
- Citesc... (8)
- Crazy things (17)
- Diverse (46)
- E tot filosofie... (24)
- Fun (40)
- La ţara (20)
- Mai râdem şi noi (52)
- Music (18)
- Personal (47)
- Photo (34)
- Poetry (32)
- porumbei (11)
- Projects (25)
Trimiteți un comentariu