Autor wpisu: batman, dodany: 09.08.2010 20:00, tagi: zend_framework
Dzisiejszym wpisem z serii “Poradniki” wracam do pierwotnych założeń, jakie przyświecały powstaniu tej kategorii, czyli “wpisy ku pamięci”. Ich celem jest pozostawienie w ogólnodostępnym miejscu informacji na temat konkretnego zadania tak, by nie musieć ponownie szukać rozwiązania, które na ogół jest banalne. Tyle tytułem wstępu, do rzeczy.
Każdy kto miał do zrobienia stronę z galerią zdjęć, stawał przed wieloma problemami z tym związanymi. Począwszy od stworzenia bezpiecznego i funkcjonalnego formularza, na przechowywaniu zdjęć kończąc. Wszystkie problemy można rozwiązać w bardzo prosty sposób w kilkunastu wierszach kodu.
Co musimy zrobić? Stworzyć galerię zdjęć w serwisie Picasaweb, a następnie dodać do niej zdjęcia. Jeśli zdjęć mamy dużo, korzystamy z aplikacji desktopowej – Picasa. Na koniec pozostanie napisanie prostego skryptu, który pobierze zdjęcia.
/* cache */ $frontendOptions = array( 'lifetime' => 3600 * 3, 'automatic_serialization' => true ); $backendOptions = array( 'cache_dir' => APPLICATION_PATH . '/../data/cache' ); $cache = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions); /* utworzenie obiektu, ktory pobierze zdjecia */ $service = new Zend_Gdata_Photos(); $photos = array(); /* jesli nie ma zdjec w cache, pobierz je z Picasy */ if(!$photos = $cache->load('photos')) { /* obiekt zapytania do albumow zdjec */ $query = new Zend_Gdata_Photos_AlbumQuery(); /* ustawienie nazwy uzytkownika, z konta ktorego beda pobierane zdjecia */ $query->setUser('some.username'); /* ustawienie nazwy albumu, z ktorego beda pobierane zdjecia */ $query->setAlbumName('SomeAlbumame'); /* pobranie zdjec */ $albumFeed = $service->getAlbumFeed($query); /* pobranie informacji o sciezce do zdjec */ foreach($albumFeed as $photo) $photos[] = (string)$photo->content->src; /* zapisanie danych do cache */ $cache->save($photos, 'photos'); }
Uważni obserwatorzy na pewno zauważą, iż scieżki, kierują do zdjęć pełnowymiarowych. Na szczęście Picasa tworzy miniaturki zdjęć i “przechowuje” je w folderach o nazwach zawierających szerokość zdjęcia. Aby dostać się do miniaturek, wystarczy użyć funkcji pathinfo.
$info = pathinfo($photo); $mini = $info['dirname'] . '/s150/' . $info['basename'];
W miejscu s150 można wstawić dowolny inny rozmiar zdjęcia poprzedzony małą literą s, np s237.