2

我正在使用 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";

}

?>
4

1 回答 1

0

算法:

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

例如:

// 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"];
}

阅读这篇文章了解更多详情。

于 2013-05-03T01:49:44.190 回答