Showing posts with label dynamic Thumbnail Generator. Show all posts
Showing posts with label dynamic Thumbnail Generator. Show all posts

Sunday, April 1, 2012

Dynamically generating thumbnail images in ASP.NET with C#


  <img src="CreateThumbnail.aspx?image=upload/product/<%# Eval("image") %>&width=50" />

 CreateThumbnail.aspx.cs

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.Drawing.Imaging;

public partial class CreateThumbnail : System.Web.UI.Page
{
    private void Page_Load(object sender, System.EventArgs e)
    {
        string Image = Request.QueryString["Image"];
        if (Image == null)
        {
            this.ErrorResult();
            return;
        }
        string sSize = Request["Size"];
        int Size = 120;
        if (sSize != null)

            Size = Int32.Parse(sSize);

        string Path = Server.MapPath(Request.ApplicationPath) + "\\" + Image;
        Bitmap bmp = Thumbnail(Path, Size, Size);

        if (bmp == null)
        {
            this.ErrorResult();
            return;
        }
        string OutputFilename = null;
        OutputFilename = Request.QueryString["OutputFilename"];
        if (OutputFilename != null)
        {

            if (this.User.Identity.Name == "")
            {

                bmp.Dispose();
                this.ErrorResult();

            }
            try
            {

                bmp.Save(OutputFilename);

            }

            catch (Exception ex)
            {
                bmp.Dispose();
                this.ErrorResult();
                return;
            }

        }
        Response.ContentType = "image/jpeg";
        bmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
        bmp.Dispose();

    }
    private void ErrorResult()
    {
        Response.Clear();
        Response.StatusCode = 404;
        Response.End();
    }
    public static Bitmap Thumbnail(string lcFilename, int lnWidth, int lnHeight)
    {
        System.Drawing.Bitmap bmpOut = null;
        try
        {
            Bitmap loBMP = new Bitmap(lcFilename);
            ImageFormat loFormat = loBMP.RawFormat;
            decimal lnRatio;
            int lnNewWidth = 0;
            int lnNewHeight = 0;
            if (loBMP.Width < lnWidth && loBMP.Height < lnHeight)

                return loBMP;
            if (loBMP.Width > loBMP.Height)
            {

                lnRatio = (decimal)lnWidth / loBMP.Width;

                lnNewWidth = lnWidth;

                decimal lnTemp = loBMP.Height * lnRatio;

                lnNewHeight = (int)lnTemp;

            }

            else
            {

                lnRatio = (decimal)lnHeight / loBMP.Height;

                lnNewHeight = lnHeight;

                decimal lnTemp = loBMP.Width * lnRatio;

                lnNewWidth = (int)lnTemp;

            }


            bmpOut = new Bitmap(lnNewWidth, lnNewHeight);

            Graphics g = Graphics.FromImage(bmpOut);

            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;

            g.FillRectangle(Brushes.White, 0, 0, lnNewWidth, lnNewHeight);

            g.DrawImage(loBMP, 0, 0, lnNewWidth, lnNewHeight);



            loBMP.Dispose();

        }

        catch
        {

            return null;

        }



        return bmpOut;

    }



}