I thought it would be an easy requirement to fetch an image from a SharePoint 2007 picture library and bind to a System.Drwaing.Image object. But when I started doing that, I had to give myself 3 to 4 hours. So here is the code snippet to fetch images from a SharePoint 2007 picture library.
Namespace Required

Function to return Image as MemoryStream
This function will return an image from a SharePoint 2007 picture library using WSS Object model. This function is taking siteUrl and filename to be fetched from the picture library. This function is returning a MemoryStream.
public static MemoryStream GetImageforCharts(string siteUrl, string fileName)
{
Byte[] fileContentsArray=null;
MemoryStream imageStream = null;
try
{
using (SPSite site = new SPSite(siteUrl))
// using (SPSite site = SPContext.Current.Site)
{
using (SPWeb web = site.OpenWeb())
{
SPPictureLibrary chartPictureLibrary = (SPPictureLibrary)web.Lists["UrPictureLibraryName"];
SPQuery query = new SPQuery();
query.Query = @"<Where><Eq><FieldRef Name ='Title'/><Value Type='Text'>" + fileName + "</Value></Eq></Where>";
SPListItemCollection lstImages = chartPictureLibrary.GetItems(query);
foreach (SPListItem r in lstImages)
{
SPFile file = r.File;
using (Stream fileContents = file.OpenBinaryStream())
{
long length = fileContents.Length ;
fileContentsArray = new Byte[length];
fileContents.Read(fileContentsArray, 0,Convert.ToInt32(length));
}
}
}
}
imageStream = new MemoryStream(fileContentsArray);
return imageStream;
}
catch (Exception ex)
{
return null;
}
Using the Function
Now we can call the function as below, and save the image in a System.Drawing.Image object.
