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