如何从System.Drawing.Bitmap显示图像类型

时间:2013-06-13 15:24:11

标签: c# asp.net-mvc razor

我正在从Active Directory中读取属性[“thumbnailPhoto”]。

我的模型将其分配给:

public Image thumbnailPhoto { get; set; }

我的服务运行此代码以从Active Directory获取图像并将其放入我的模型中。

public Image GetUserPicture(string userName)
        {
            using (DirectoryEntry de = new DirectoryEntry("LDAP://server.com"))
            using (DirectorySearcher ds = new DirectorySearcher(de))
            {
                ds.Filter = ("(&(objectCategory=person)(objectClass=User)(sAMAccountName=" + userName + "))");
                ds.PropertiesToLoad.Add("thumbnailPhoto");
                SearchResult rs = ds.FindOne();
                using (MemoryStream s = new MemoryStream(rs.Properties["thumbnailPhoto"][0] as byte[]))
                {
                    return Bitmap.FromStream(s);
                }
            }
        }

我调用上面的方法并从这一行将它分配给Model:

user.thumbnailPhoto = GetUserPicture(rs.Properties["sAMAccountName"][0].ToString());

这一切似乎都有效,没有错误,我可以在调试器中看到user.thumbnailPhoto的类型为System.Drawing.Bitmap。

我现在被困在哪里是如何在网页上显示这个?

是否可以将此thumbnailPhoto投放到Session["UserPhoto"],因为我会在每个页面上都需要它?

1 个答案:

答案 0 :(得分:2)

我会将其转换为Base64 string,然后将其作为来源。

   using (MemoryStream s = new MemoryStream(rs.Properties["thumbnailPhoto"][0] as byte[]))
   {
       byte[] imageBytes = s.ToArray();
       string base64String = Convert.ToBase64String(imageBytes);
   }


   <img src="image/png;base64,@Model.ImageBase64String" />