Fetching Image from SharePoint 2007 picture library using object model

Posted by Dhananjay Kumar Articles | SharePoint 2010 February 08, 2011
Fetch an image from a SharePoint 2007 picture library and bind to a System.Drwaing.Image object
Reader Level:


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

Share1.gif

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.

Share2.gif
 

COMMENT USING

Trending up