如何让phpFlickr返回原始图像?

时间:2011-05-12 17:15:36

标签: api flickr phpflickr

此代码完美无缺:

$f = new phpFlickr(FLICKR_API_KEY, FLICKR_API_SECRET);
$f->setToken(FLICKR_AUTH_TOKEN);
// Next line is just WordPress providing the photoset ID.
$mySetID = get_post_meta($post->ID, 'Flickr set ID', true); 
$mySet = $f->photosets_getPhotos($mySetID, NULL, NULL);
foreach ($mySet['photoset']['photo'] as $photo) {
    echo '<div><img src="'. $f->buildPhotoURL($photo, 'large') .'" alt="" /></div>';
}

...直到buildPhotoURL被告知获取“原始”大小,此时返回的URL类似于“http://farm6.static.flickr.com/5607/5332878962__o”。这显然是无效的。

虽然我通过搜索找到的所有内容似乎都同意这样做需要一些“原始秘密”和“原始格式”值,这些值在Flickr自己的文档中几乎没有提及,而phpFlickr似乎确实try and use them,它们是显然没有被默认提取,我还没有看到有人发布如何实际提供它们的代码。我已经尝试在回声线之前调用$ f-&gt; photos_getInfo(),传递各种不起作用的东西,我开始觉得我错过了每个人都认为很明显的东西,即使没有人{{ 3}}(我可以找到)在phpFlickr论坛上重复提问。

注意:

  • 是专业帐户。
  • 我们 正确进行身份验证(这些是私有设置,它们适用于所有其他规模)。
  • 在Flickr的隐私设置中访问原始大小设置为“任何人”。

想法?

2 个答案:

答案 0 :(得分:4)

我知道这有点晚了,我确定你现在已经解决了这个问题,但我想分享一个相关的答案,因为我只是花了一些时间来解决类似的问题,正如你所说,关于这个问题的答案在任何地方都找不到。

要获取显示原始大小图像所需的信息,以下网址应该有效:

http://api.flickr.com/services/rest/?&method=flickr.photosets.getPhotos&api_key=YOURAPIKEYNUMBER&photoset_id=YOURSETIDNUMBER&per_page=100&sort=date-posted-desc&extras=original_format&format=json&jsoncallback=?

当然所有变量都可以根据您的需要进行自定义,但这只是一个示例,它显示了按日期降序排列的前100个图像,其中附加了原始图像格式信息,包括重要的“原始”密码

要显示图像,您可以使用的是

'http://farm' + item.farm + '.static.flickr.com/' + item.server + '/' + item.id + '_' + item.originalsecret + '_' + 'o' + '.' + item.originalformat;

主要的关键点是“&amp; extras = original_format”,因为它为您提供了原始秘密和原始格式,您需要从flickr调用原始大小的图像。当我遇到原始尺寸问题时,我正在使用SuperSized后台插件。

答案 1 :(得分:3)

photosets_getPhotos()方法不会返回$photo的完整数组。它会返回$photo的一些基本信息,而不是$photo['originalformat']所需的buildPhotoURL()

您可以告诉photosets_getPhotos()将原始格式作为可选附加内容返回。这为buildPhotoURL()提供了所需的一切。

示例:

$mySet = $f->photosets_getPhotos($mySetID, 'original_format', NULL);
foreach ($mySet['photoset']['photo'] as $photo) {
    echo '<div><img src="'. $f->buildPhotoURL($photo, 'original') .'" alt="" /></div>';
}

更好的是,您可以让photosets_getPhotos()返回原始照片本身的网址。

示例:

$mySet = $f->photosets_getPhotos($mySetID, 'url_o', NULL);
foreach ($mySet['photoset']['photo'] as $photo) {
    echo '<div><img src="'. $photo['url_o'] .'" alt="" /></div>';
}