2006年12月3日 星期日

用 Flickr.NET 搜尋下載照片的開發步驟

http://richielin-programer.blogspot.com/2006/12/flickrnet.html

Flickr 是一個廣為使用的網路相簿
其功能和普及性相信不用天秤我多說什麼了
因為其 Flickr API 各開發平台及功能齊全,也產生許多很好玩的應用程式
這次介紹一下 Flickr 在 .NET Framework 下的 API 開發步驟
官網: Flickr.NET

搜尋、下載照片是 Flickr API 最基本的功能
而用 Flickr.NET 搜尋、下載照片是不須要使用者輸入帳號登入
而且程式開發也最簡單直覺,以下是天秤我寫的開發步驟
開發前準備
  • 首先要開發 Flickr 應用程式必須先有一組 Flickr API Keys
    當然你得先是 Flickr 的會員,可以到 Flickr 註冊免費會員
  • http://www.flickr.com/services/api/key.gne 申請一組 Keys
  • 到 http://www.flickr.com/services/api/keys/ 管理你的 Flickr API Keys,在該 Keys 下方按 Edit key details 頁後
    選擇 Desktop Application 後儲存
    這裡的 Web Application 和 Desktop Application 不知有何不同
    反正就選 Desktop Application 就是了
  • 開發工具可以使用 Visual Studio.NET 2003 或 Visual Studio 2005
    可以到 Microsoft 下載免費的 Visual C# 2005 Express Edition 來用
  • 新增 C# 專案,把 Flickr.NET 加入參考
  • 大部份的函式或結構都是在 FlickrNET.Flickr 這個類別中,以下範例也都是如此
搜尋 Tag 照片
  • Flickr.NET 搜尋可以用 PhotoSearchOptions 結構帶入 Tags 參數
    並以 PhotosSearch 函式來搜尋
    其中 keys 是上一步申請的 Keys
FlickrNet.PhotoSearchOptions options = new FlickrNet.PhotoSearchOptions();
options.Tags = "Taiwan";
FlickrNet.Photos photos = new FlickrNet.Flickr(keys).PhotosSearch(options);


  • 回傳的 Photos.PhotoCollection 就是找到的照片陣列了

搜尋指定使用者照片


  • 搜尋使用者照片必須先找到使用者的 UserId
    用 PeopleFindByUsername 函式依 UserName 或是
    用 PeopleFindByEmail 函式依 Email 來找使用者
FlickrNet.FoundUser user = new FlickrNet.Flickr(keys).PeopleFindByUsername(名稱);
FlickrNet.FoundUser user = new FlickrNet.Flickr(keys).PeopleFindByEmail(Email);


  • FoundUser 結構中的 UserId 就是了
  • 再將 UserId 帶入 PhotoSearchOptions 結構的 UserId 欄位
  • 以上一步驟的方式搜尋即可

搜尋指定使用者的照片集 (Photo Set)


  • 照片集的搜尋方式和之前不太一樣,首先必須依 UserId 來找出該使用者所有的照片集
FlickrNet.Photosets sets = new FlickrNet.Flickr(keys).PhotosetsGetList(user.UserId);


  • 再將該照片集 PhotosetId 用 PhotosetsGetPhotos 函式取得照片的陣列即可
FlickrNet.Photoset set = sets.PhotosetCollection[0];
FlickrNet.Photo[] photos = new FlickrNet.Flickr(keys).PhotosetsGetPhotos(set.PhotosetId);

下載照片並顯示


  • FlickrNet.Photo 結構裡有各種尺寸照片的 Url 和 Web Url,如 ThumbnailUrl 就是小尺寸照片的 Url
  • 可以用 DownloadPicture 函式並帶入照片 Url 來下載照片
  • 再用下載回傳的 IO Stream 來產生 Bitmap 即可顯示在視窗上了
System.IO.Stream io = new FlickrNet.Flickr(keys).DownloadPicture(photos[0].ThumbnailUrl);
System.Drawing.Bitmap image = new System.Drawing.Bitmap(io);

Flickr API 幾乎將所有 Flickr 功能都提供了
而 Flickr.NET 也以 .NET 簡單乾淨的語法將 Flickr API 精髓都表現出來
天秤這裡介紹只是最基本的運用
當然 Flickr.NET 還有其它更進階的功能,就等有空時再來補上了

1 意見:

CFC 提到...

Web Application就是像是Flickr、YouTube這種網站應用程式
而Desktop Application則是Friendly.Flickr、瀏覽器這種應用程式

感謝您撰寫的開發日誌,讓我得以了解到Flickr API該怎樣運用
謝謝^^

CFC --