SIGN UP MEMBER LOGIN:    
ARTICLE

Convert High Resolution uploaded Image to Thumbnail

Posted by Ankit Nandekar Articles | ASP.NET Programming March 24, 2011
To convert uploaded image to thumbnail this article provides a few steps which will be easy to follow.
Reader Level:
Download Files:
 

With the use of following code you can convert all uploaded images to thumbnail images.

To convert uploaded image to thumbnail this article provides a few steps which will be easy to follow.

Step 1:

Design a Form drag FileUpload Control from toolbox .I have Taken 10 FileUpload Control.

<table class="style3">

            <tr>
            <td>
                &nbsp;</td>
            <td>
                &nbsp;</td>
            <td colspan="3">
                <fieldset>
            <legend>Upload Multiple Photos</legend>
            <div id="div1" runat="server">
                <input type="file" size="65" runat="server" id="FileUpload1">
                <input type="file" size="65" runat="server" id="FileUpload2">
                <input type="file" size="65" runat="server" id="FileUpload3">
                <input type="file" size="65" runat="server" id="FileUpload4">
                <input type="file" size="65" runat="server" id="FileUpload5">
            </div>
            <br />
            <div id="div2" runat="server" visible="false">
                <input type="file" size="65" runat="server" id="FileUpload6">
                <input type="file" size="65" runat="server" id="FileUpload7">
                <input type="file" size="65" runat="server" id="FileUpload8">
                <input type="file" size="65" runat="server" id="FileUpload9">
                <input type="file" size="65" runat="server" id="FileUpload10">
            </div>
            <asp:Label ID="lblError1" runat="server" Text="Label"></asp:Label>
                                    <asp:Label ID="MessageLabel" runat="server" ForeColor="Red"></asp:Label>
            <br />
            <asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="btnUpload_Click"
                style="height: 26px" />
            <asp:Button ID="ButtonMore" runat="server" Text="Add 10 Photos" OnClick="ButtonMore_Click" />
                    &nbsp;&nbsp;
            </fieldset>
            <br />
            <div id="div5" runat="server" visible="false">

        </div>
            </td>
            <td>
                &nbsp;</td>
            <td>
                &nbsp;</td>
            <td>
                &nbsp;</td>
        </tr>
    </table>

Step 2:

On Upload button's Click event write following code…..

Directory.CreateDirectory(Server.MapPath("RealImage\\"));

        div5.Visible = true;
        HttpFileCollection uploadFilCol = Request.Files;

        Control[] f = new Control[10]{FileUpload1,
                    FileUpload2,
                    FileUpload3,
                    FileUpload4,
                    FileUpload5,
                    FileUpload6,
                    FileUpload7,
                    FileUpload8,
                    FileUpload9,
                    FileUpload10 };

        for (int i = 0; i < uploadFilCol.Count; i++)
        {

            HttpPostedFile file = uploadFilCol[i];

            string fileExt = Path.GetExtension(file.FileName).ToLower();
            string fileName = Path.GetFileName(file.FileName);

            HtmlInputFile htmlFile = (HtmlInputFile)f[i];
            if (htmlFile.PostedFile.ContentLength > 0)
            {

                string sFormat = String.Format("{0:#.##}", (float)htmlFile.PostedFile.ContentLength / 2048);
                if (float.Parse(sFormat) < float.Parse("2048"))
                {
                    if (htmlFile.PostedFile != null)
                    {
                        ViewState["ImageName"] = htmlFile.PostedFile.FileName.Substring(htmlFile.PostedFile.FileName.LastIndexOf("\\") + 1);//browseImagePath[0];                   
                    }
                    else
                    {
                        ViewState["ImageName"] = "";
                    }
                else
                {
                    lblError1.Visible = true;
                lblError1.Text = "Image Size is Large, please resize it !!";
                }
            }
            else
            {
                ViewState["ImageName"] = "";
                if (ViewState["ImageName"].ToString() == "")
                {
                    lblError1.Visible = true;
                    lblError1.Text = "Attach an image to upload";
                }
 
            }
            MakeThumbnail(htmlFile);
 
        }


Write Thumbnailcallback function which is returning true

    public bool ThumbnailCallback()
    {
        return true;
    }

Step 3:

On More Button's click event write following code,with the use of this code you can enable 10 file upload control ,means you can upload 10 files at a time.

       protected void ButtonMore_Click(object sender, EventArgs e)
       {

         if (ButtonMore.Text == "Only five")
            {
                div2.Visible = false;
                ButtonMore.Text = "Add 10 Photos";
              
            }
            else if (ButtonMore.Text == "Add 10 Photos")
            {
                div2.Visible = true;
                ButtonMore.Text = "Only five";
            
            }
        }
        }


Step 4:

Write Following Function which is use to convert high resolution image to thumbnail.

private void MakeThumbnail(HtmlInputFile htmlFile)
    {
        System.Drawing.Image myThumbnail150;
        object obj = new object();
        obj = htmlFile;
        System.Drawing.Image.GetThumbnailImageAbort myCallback = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
        HtmlInputFile hFile = (HtmlInputFile)obj;
        if (hFile.PostedFile != null && hFile.PostedFile.ContentLength > 0)
        {
            //this code used to remove some symbols between image name and replace with space
            string imgname1 = hFile.PostedFile.FileName.Replace('%', ' ').Substring(hFile.PostedFile.FileName.LastIndexOf("\\") + 1);
            string imgname2 = imgname1.Replace('#', ' ').Substring(imgname1.LastIndexOf("\\") + 1);
            string imgname3 = imgname2.Replace('@', ' ').Substring(imgname1.LastIndexOf("\\") + 1);
            string imgname4 = imgname3.Replace(',', ' ').Substring(imgname1.LastIndexOf("\\") + 1);
            string imgname5 = imgname4.Replace('&', ' ').Substring(imgname1.LastIndexOf("\\") + 1);

            Finalimagename = imgname5.ToString();

            string imgname = hFile.PostedFile.FileName.Substring(hFile.PostedFile.FileName.LastIndexOf("\\") + 1);
            string sExtension = imgname.Substring(imgname.LastIndexOf(".") + 1);

            //this code is used to check image extension
            if (sExtension.ToLower() == "jpg" || sExtension.ToLower() == "gif" || sExtension.ToLower() == "bmp" || sExtension.ToLower() == "jpeg" || sExtension.ToLower() == "png")
            {
                if (!File.Exists(MapPath("RealImage\\" + Finalimagename)))
                {
                    hFile.PostedFile.SaveAs(ResolveUrl(Server.MapPath("RealImage\\" + Finalimagename)));

                    System.Drawing.Image imagesize = System.Drawing.Image.FromFile(ResolveUrl(Server.MapPath("RealImage\\" + Finalimagename)));
                    Bitmap bitmapNew = new Bitmap(imagesize);
                    if (imagesize.Width < imagesize.Height)
                    {

                        myThumbnail150 = bitmapNew.GetThumbnailImage(150 * imagesize.Width / imagesize.Height, 150, myCallback, IntPtr.Zero);

                    }
                    else
                    {
                        myThumbnail150 = bitmapNew.GetThumbnailImage(150, imagesize.Height * 150 / imagesize.Width, myCallback, IntPtr.Zero);

                    }
                    //Create a new directory name ThumbnailImage
                    Directory.CreateDirectory(Server.MapPath("ThumbnailImage"));
                    //Save image in TumbnailImage folder
                    myThumbnail150.Save(ResolveUrl(Server.MapPath("ThumbnailImage\\")) + Finalimagename, System.Drawing.Imaging.ImageFormat.Jpeg);
                    MessageLabel.Text = "Successfully uploaded";

                }
            }
            else
            {
                lblError1.Visible = true;
                lblError1.Text = "Check image extension";
            }
        }
    }

Step 5:

Run Your Website.

Note: Don't forget to add namespace using System.IO .
 

Login to add your contents and source code to this article
share this article :
post comment
 
Become a Sponsor
PREMIUM SPONSORS
  • Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
    Get 2 Months Free of ASP.NET Hosting for Only $4.95/month! Receive FREE MS SQL and MySQL Databases Including ASP.NET 4/3.5, MVC 3.0, Silverlight 4, Windows 2008/IIS 7.0 Plus FREE IIS 7 Modules. Host UNLIMITED ASP.NET Web Sites - Click Here!
Team Foundation Server Hosting
Become a Sponsor