此代码完美无缺:
$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论坛上重复提问。
注意:
想法?
答案 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>';
}