picasa api的缩略图

时间:2013-04-11 20:12:41

标签: php api picasa

我正在使用picasa api进行社区搜索,现在我也希望将缩略图放在搜索结果上。我该怎么做呢?我希望结果有缩略图,点击缩略图可以带你到网络相册中的图像。

<?php

require_once 'Zend/Loader.php';

Zend_Loader::loadClass('Zend_Gdata_Photos');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_Query');

$search=$_REQUEST['id'];

$serviceName = Zend_Gdata_Photos::AUTH_SERVICE_NAME;
$user = "abc@gmail.com";
$pass = "password";


$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $serviceName);

$gp = new Zend_Gdata_Photos($client, "Google-DevelopersGuide-1.0");

// Community search queries aren't currently supported through a separate
// class in the PHP client library.  However, we can use the generic 
// Zend_Gdata_Query class as an alternative

// URL for a community search request
// Creates a Zend_Gdata_Query
$query = $gp->newQuery("https://picasaweb.google.com/data/feed/api/all");

// looking for photos in the response
$query->setParam("kind", "photo");

// full text search
$query->setQuery($search);

// maximum of 10 results
$query->setMaxResults("6");

// There isn't a specific class for representing a feed of community
// search results, but the Zend_Gdata_Photos_UserFeed understands
// photo entries, so we'll use that class
$userFeed = $gp->getUserFeed(null, $query);
foreach ($userFeed as $photoEntry) 
{
 echo $photoEntry->getTitle()->getText() . "</br > ";
// The 'alternate' link on a photo represents the link to
// the image page on Picasa Web Albums
$link=$photoEntry->getLink('alternate')->getHref();
echo "<img src='".$link."'>";
echo '<a href="'.$link.'">'.$photoEntry->getLink('alternate')->getHref().'</a> <br />';
echo "<br />\n";

}

?>

1 个答案:

答案 0 :(得分:0)

算法:

  1. 获取照片的网址。
  2. 将URL解析为其组成部分(方案,主机,路径,文件名)。
  3. 在文件名之前注入缩略图限定符。
  4. 重新组装组件。
  5. 例如:

    // Define thumbnail properties (w = width, 200 = pixels).
    $THUMBMAIL = "w200";
    
    // Get the "source" URL for the image.
    $imgSrc  = $photoEntry->content->getSrc();
    
    // Extract the component parts.
    $url = parse_url( $imgSrc );
    
    // Extract the path and inject the thumbnail size.
    $url["path"] = dirname( $path ) . "/$THUMBNAIL/" . basename( $path );
    
    // Reassemble the URL.
    $thumbnail = build_url( $url );
    

    你应该可以使用http_build_url,但我有命名冲突,所以写了这个:

    function build_url( $url ) {
      return $url["scheme"] . "://" . $url["host"] . "/" . $url["path"];
    }
    

    阅读this article了解详情。