Как мне заставить phpFlickr вернуть исходное изображение? - PullRequest
3 голосов
/ 12 мая 2011

Этот код отлично работает:

$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.", что явно недопустимо.

Хотя все, что я обнаружил в результате поиска, похоже, соглашается с тем, что для этого требуются некоторые значения "originalsecret" и "originalformat", которые едва упоминаются в собственной документации Flickr, а phpFlickr, похоже, пытается их использовать они явно не извлекаются по умолчанию, и я еще не видел, чтобы кто-то опубликовал код для того, как на самом деле предоставить их. Я пытался вызвать $ f-> photos_getInfo () непосредственно перед строкой эха, передавая различные вещи безрезультатно, и я начинаю чувствовать, что пропускаю то, что все считают очевидным, хотя никто не имеет когда-либо давал действительный ответ (который я могу найти) на повторяющиеся вопросы об этом на форуме phpFlickr.

Примечание:

  • Этот является учетной записью Pro.
  • Мы аутентифицируемся должным образом (это частные наборы, и они отлично работают для всех остальных размеров).
  • Доступ к исходному размеру в настройках конфиденциальности Flickr установлен на «Любой».

Идеи

Ответы [ 2 ]

4 голосов
/ 13 января 2013

Я знаю, что уже немного поздно, и я уверен, что вы уже поняли проблему, но я хотел поделиться соответствующим ответом, потому что я просто потратил некоторое время на борьбу с подобной проблемой, и, как вы сказали, ответы на эту тему нигде не найти.

Чтобы получить информацию, необходимую для отображения изображений оригинального размера из набора, должен работать следующий 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", потому что он дает вам формат оригинального секрета и оригинала, который вам необходим для вызова изображения оригинального размера из flickr. Я использовал фоновый плагин SuperSized, когда столкнулся с проблемой исходного размера.

3 голосов
/ 06 января 2012

Метод 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() вернуть URL-адрес самой исходной фотографии.

Пример:

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