3

背景: Facebook API で動作する C# フォーム アプリケーションを構築しています。私のプログラムは、友人の ID と名前の完全なリストを認証して取得することができます。これらを ListView コントロールに追加する方法を理解しており、この部分は成功しています。プログラムが小さな JSON ファイルを要求して受信するため、このプロセスには数秒かかります。

友達 ID のコレクションを使用して、各友達のプロフィール写真をhttps://graph.facebook.com/USER_ID/pictureから取得できます。

Image Key を追加しながら、インターネットから入手したこれらの画像を ImageList に追加して、 User ID を使用して ListViewItem にリンクできるようにする方法について、誰かが解決策を持っていますか?

private void populate_Click(object sender, EventArgs e)
{
    var fb = new FacebookClient(_aT);
    dynamic friends = fb.Get("/me/friends");

    // Populate the ImageList
    ImageList avatars = new ImageList();

    foreach (dynamic item in friends.data)
    {
        var src = "https://graph.facebook.com/" + item.id + "/picture";

        // Add Image from src to avatars ImageList

    }


}

作業する画像が非常に大きいことを覚えておいてください。各画像は 50 x 50 の JPG である必要があります。

4

1 に答える 1

2
// Download the bitmap data using an instance of WebClient class.
using (WebClient webClient = new WebClient())
{
    foreach (var url in urls)
    {
        byte[] bitmapData;
        bitmapData = webClient.DownloadData(url);

        // Bitmap data => bitmap => resized bitmap.            
        using (MemoryStream memoryStream = new MemoryStream(bitmapData))
        using (Bitmap bitmap = new Bitmap(memoryStream))
        using (Bitmap resizedBitmap = new Bitmap(bitmap, 50, 50))
        {
            // NOTE:
            // Resized bitmap must be disposed because the imageList.Images.Add() method
            // makes a copy (!) of the source bitmap!
            // For details, see https://stackoverflow.com/questions/9515759/                
            imageList.Images.Add(resizedBitmap);
        }
    }
}

クラスのインスタンスのタイムアウトを増やすには、この回答WebClientをご覧ください。

于 2012-08-04T18:30:41.580 に答える