Pull to refresh

Использование picasaweb в качестве фотохостинга

Reading time 5 min
Views 6.6K
Нужно использовать много изображений на сайте? Не хочется забивать хостинг изображениями? Хочется уменьшить нагрузку на сервер?
Тогда можно использовать сервис от гугл picasaweb і Picasa API как хостинг для изображений

процесс загрузки фотографий на сервер

Особенности picasaweb


  1. Надежность сервиса от гугл
  2. Удобно загружать фотографии на сервер
  3. Перед загрузкой можно выбрать размер и подкорректировать параметры изображения
  4. Бесплатно доступно 1 Гигабайт, если нужно больше, можно купить 20Г за $5 в год
  5. Есть API


Теория (кто знаком с программой picasa и сервисом picasaweb.google.com можно пропустить)


У гугл есть программа http://picasa.google.com/ для поиска и редактирования изображений на компьютере. При маленьком размере загрузочного файла программа может очень многое. Описывать возможности не буду, лучше попробовать. Нас интересует загрузка изображений с локального компьютера на сервис изображений picasaweb.google.com

1. После установки picasa, ждем некоторое время, когда программа найдет изображения на компьютере
2. Выделяем нужные изображения


3. Из контекстного меню выбираем Upload to Picasa Web Albums…(в английском варианте)


4. Вводим логин и пароль если не вошли в акаунт гугл


5. Вводим название и выбираем размер изображений. Для веб-альбомов достаточно 640 пикселей


6. Наглядно видно процесс загрузки


Практика



Загружаем библиотеку для работы с Picasa Api написанную Cameron Hinkle

Особенности библиотеки
1. Есть отличная документация
2. Бесплатная
3. Поддерживает большинство возможностей picasa

1. Для работы библиотеки нужно что б путь к файлам библиотеки входил в include_path
2. В файле Picasa.php поменять путь к библиотеке

  1.  
  2.       ini_set('include_path',ini_get('include_path').'.:'.$_SERVER['DOCUMENT_ROOT'].'/phplib/LightweightPicasaAPIv3/');
  3.       $library_path = $_SERVER['DOCUMENT_ROOT'].'/phplib/LightweightPicasaAPIv3/';
  4.       include_once ($_SERVER['DOCUMENT_ROOT'].'/phplib/LightweightPicasaAPIv3/Picasa.php');
  5.       //
  6.       // $user - владелиц альбома
  7.       // $album_name - название альбома
  8.       // пример: для альбома picasaweb.google.com.ua/muzprostir/290110
  9.       // $user=muzprostir
  10.       // $album_name=290110
  11.       //
  12.    
  13.       function get_picasa_album($user, $album_name)
  14.       {
  15.           // если есть кеш, берем данные из кеша
  16.           if (file_exists($_SERVER['DOCUMENT_ROOT'].'/cache/picasa_api_cache/'.$user.'/'.$album_name) )
  17.           {
  18.               $album_data = unserialize(file_get_contents($_SERVER['DOCUMENT_ROOT'].'/cache/picasa_api_cache/'.$user.'/'.$album_name));
  19.           }
  20.           else      
  21.           {
  22.               // получаем данные через API picasa
  23.               $pic = new Picasa();
  24.               // получаем данные для альбома, в последнем параметре указываем размеры необходимых изображений. Можно также указать размеры: 72, 144, 200, 320, 400, 512, 576, 640, 720, 800, 912, 1024, 1152, 1280, 1440, 1600
  25.               // googlesystem.blogspot.com/2006/12/embed-photos-from-picasa-web-albums.html
  26.               $album = $pic->getAlbumById($user, $album_name,null,null,null,null,'144,640');
  27.        
  28.               // получаем данные о изображениях в альбоме
  29.               $images = $album->getImages();
  30.               foreach ($images as $image)
  31.               {
  32.                   $thumbnails = $image->getThumbnails();
  33.                   $album_data['images'][] = array('url'=>(string)$thumbnails[1]->getUrl(),
  34.                                                   'width'=>(string)$thumbnails[1]->getWidth(),
  35.                                                   'height'=>(string)$thumbnails[1]->getHeight(),
  36.                                                   'title'=>(string)$image->getDescription(),
  37.                                                   'tn_url'=>(string)$thumbnails[0]->getUrl(),
  38.                                                   'tn_width'=>(string)$thumbnails[0]->getWidth(),
  39.                                                   'tn_height'=>(string)$thumbnails[0]->getHeight(),
  40.                                             );
  41.                              
  42.               }
  43.               // иконка альбома
  44.               $album_data['url'] = (string)$album->getIcon();
  45.               $album_data['width'] = '160';
  46.               $album_data['height'] = '160';
  47.               $album_data['title'] = (string)$album->getTitle();
  48.              
  49.               // сохраняем данные в кеш
  50.               if(!is_dir($_SERVER['DOCUMENT_ROOT'].'/cache/picasa_api_cache/'.$user))
  51.                     mkdir($_SERVER['DOCUMENT_ROOT'].'/cache/picasa_api_cache/'.$user,0777);
  52.               file_put_contents($_SERVER['DOCUMENT_ROOT'].'/cache/picasa_api_cache/'.$user.'/'.$album_name,serialize($album_data));
  53.           }
  54.              
  55.           return $album_data;
  56.       }
  57.  
  58.  


Внимание! По указанной выше ссылке библиотека модифицирована. Вместо id альбома передается название.
Оригинальную библиотеку можно скачать тут

Результат



Фотографии на живом сайте
Фотографии на сайте picasaweb

P.S. Для Zend Framework есть класс для работы с picasа API

Особая благодарность Cameron Hinkle за отличную библиотеку 
Tags:
Hubs:
+72
Comments 78
Comments Comments 78

Articles