3

此代码完美运行:

$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 自己的文档中几乎没有提到的“originalsecret”和“originalformat”值,而 phpFlickr 似乎确实尝试使用它们,但它们显然没有被获取默认情况下,我还没有看到有人发布如何实际提供它们的代码。我试过在回声线之前调用 $f->photos_getInfo() ,传递各种东西都没有效果,我开始觉得我错过了每个人都认为很明显的东西,即使没有人曾经制作过对 phpFlickr 论坛上关于它的重复问题的有效回复(我可以找到)。

笔记:

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

想法?

4

2 回答 2

4

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

要获取显示一组原始尺寸图像所需的信息,以下 url 应该可以工作:

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 张图像,并附有原始图像格式信息,包括重要的“原始”密码

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

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

主要的症结是“&extras=original_format”,因为它为您提供了 originalsecret 和 originalformat,您需要从 flickr 调用原始大小的图像。当我遇到原始大小问题时,我正在使用 SuperSized 背景插件。

于 2013-01-13T01:10:11.357 回答
3

photosets_getPhotos()方法不返回完整的数组$photo$photo它返回一些关于but not的基本信息$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()返回原始照片本身的 URL。

例子:

$mySet = $f->photosets_getPhotos($mySetID, 'url_o', NULL);
foreach ($mySet['photoset']['photo'] as $photo) {
    echo '<div><img src="'. $photo['url_o'] .'" alt="" /></div>';
}
于 2012-01-05T23:41:19.117 回答