Galerie foto folosind imagini de pe Picasa

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=;$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.


0 comentarii to "Galerie foto folosind imagini de pe Picasa"

Trimiteți un comentariu

Categorii

Palavrele mele