3

背景:我正在构建一个使用 Facebook API 的 C# Forms 应用程序。我的程序已经可以成功验证并检索朋友 ID 和姓名的完整列表。我了解如何将这些添加到 ListView 控件中,这部分是成功的。当我的程序请求并接收一个小的 JSON 文件时,这个过程需要几秒钟。

通过一组朋友 ID,我可以从https://graph.facebook.com/USER_ID/picture获取每个朋友的个人资料图片。

有没有人知道如何在添加图像键的同时将这些来自互联网的图像添加到我的 ImageList 中,以便我可以将它们链接到具有用户 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 回答