how to display your flickr photos using php

A Division of Me by toxictwo on deviantART
Photo by ~toxictwo on deviantART

In order to complete this tutorial you will need to apply for a flickr API key. You will also need to download a copy of phpFlickr API Kit. The use of an API Kit makes the use of flickr’s API methods easier. You can also view the demo page of the tutorial (opens in a new tab).

Let’s begin. First, we need to include the phpFlickr main file and then create a new phpFlickr object which is stored in the $phpFlickrObj variable. Make sure you enter the correct path (where you extracted the phpFlickr files) and also enter your flickr API key.

require_once("phpFlickr/phpFlickr.php");
$phpFlickrObj = new phpFlickr('Your_Flickr_API_Key');

The next step is to obtain your NSID by using your flickr username (in the example I’m using my flickr username), which is stored in the $user variable. Using this NSID, we get the url to the specific user’s photos and we store it in the $user_url variable. Finally, we get an array ($photos) containing all the relevant information (id, title, etc.) of the last four (if you want to change the number of photos, just change the number) photos appearing in the user’s photostream.

$user = $phpFlickrObj->people_findByUsername('stathisg');
$user_url = $phpFlickrObj->urls_getUserPhotos($user['id']);
$photos = $phpFlickrObj->people_getPublicPhotos($user['id'], NULL, NULL, 4);

In this example we use only the id and the title of each photo. If you want to view all the information contained in the array, you can use print_r($photos).

The final step to display the photos, is to convert the multidimensional array into an array of one dimension and use a loop to display everything. The following code, displays the photos. The photos can be displayed in six different sizes. To change the size, you need to alter the “square” value. The available sizes are: square, thumbnail, small, medium, large and original.

foreach ($photos['photos']['photo'] as $photo)
{
  echo '<a href="'.$user_url.$photo['id'].'" title="'.$photo['title'].' (on Flickr)" target="_blank">';
  echo '<img alt="'.$photo['title'].'" src="'.$phpFlickrObj->buildPhotoURL($photo, "square").'" />';
  echo '</a>';
}

The complete code is diplayed below. You can also view the demo page of the tutorial (opens in a new tab).

require_once("phpFlickr/phpFlickr.php");
$phpFlickrObj = new phpFlickr('46dea5f6abb12aed7a823adb7ecf5816');

$user = $phpFlickrObj->people_findByUsername('stathisg');
$user_url = $phpFlickrObj->urls_getUserPhotos($user['id']);
$photos = $phpFlickrObj->people_getPublicPhotos($user['id'], NULL, NULL, 4);

foreach ($photos['photos']['photo'] as $photo)
{
  echo '<a href="'.$user_url.$photo['id'].'" title="'.$photo['title'].' (on Flickr)" target="_blank">';
  echo '<img alt="'.$photo['title'].'" src="'.$phpFlickrObj->buildPhotoURL($photo, "square").'" />';
  echo '</a>';
}

there are 5 comments:

  1. Hi, thanks for the tutorial, got me up and running in no time.

    I’ve managed to display the photo’s title with it but struggling with displaying the photo’s description. Could you advise on how to display this please. It’s not one of the values in the $photos array.

    Many thanks,
    Dave

  2. Hello Dave,

    You can get the photo’s description using the following code (place it into the foreach loop of the example):

    $info = $f->photos_getInfo($photo[id]);
    echo $info['description'];

    I hope that helps.

  3. Thank you I got your code and it worked fine.
    But can you explain how you display the next set of results from a search maybe?
    Thanks

  4. Hello Samuel,

    Can you explain in more detail your question? I cannot understand what you want me to explain :-)

  5. Flickr is really a great way to share photos on the net, the photo resizing feature of Flickr is what i like

Leave a Comment