Resizing Images In ASP.NET


I’m sure there are plenty of similar topics out there but this is my two cents. Lets say you have the following code in your ASP.NET page:

    1 Upload a File: &nbsp;<asp:FileUpload ID="pictureUpload" runat="server" /><br />

    2 <asp:Button ID="btnUpload" runat="server" Text="Upload" OnCommand="handle_ButtonClick" CommandName="Upload" />

Let’s look at the event handler code that uploads the image to the server and resizes it.

    1     protected void handle_ButtonClick(object sender, CommandEventArgs e)

    2     {

    3         if (e.CommandName == "Upload")

    4         {

    5             if (pictureUpload.HasFile)

    6             {

    7                 string FilePath = HttpContext.Current.Server.MapPath(PATH_FILESFOLDER) + pictureUpload.FileName;

    8                 pictureUpload.SaveAs(FilePath);

    9                 ResizeImageAndSave(FilePath, 90);

   10             }

   11         }

   12     }

   13 

   14     public void ResizeImageAndSave(string FilePath, int Width)

   15     {

   16         Bitmap loBMP = new Bitmap(FilePath);

   17         ImageFormat loFormat = loBMP.RawFormat;

   18 

   19         //*** If the image is smaller than a thumbnail just return it

   20         if (loBMP.Width < Width) return;

   21 

   22         decimal lnRatio = Convert.ToDecimal(Width) / loBMP.Width;

   23         int lnNewWidth = Width;

   24         int lnNewHeight = Convert.ToInt32(loBMP.Height * lnRatio);

   25 

   26         Bitmap bmpOut = new Bitmap(lnNewWidth, lnNewHeight);

   27         Graphics g = Graphics.FromImage(bmpOut);

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

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

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

   31 

   32         //Dispose old  BMP object

   33         loBMP.Dispose();

   34 

   35         bmpOut.Save(FilePath);

   36         bmpOut.Dispose();

   37     }

The code is pretty obvious - save the file to the specified path, resize the image, dispose the old image and finally save the new image.

Happy Programming!



Using FlexiGrid in your ASP.NET application


I’ve been exploring JQuery for quiet some time now and I’m already a huge fan! Not only is it light-weight but its extensible too - there are plugins for everything, just name it! Well, almost everything ;) Today I’m going to demonstrate how we can use the excellent FlexiGrid plugin in our ASP.NET applications.

Add the following code to the head section of the document in which you want to display the grid.

    1 <link href="style/flexigrid.css" rel="stylesheet" type="text/css" />

    2 

    3     <script src="scripts/jquery.js" type="text/javascript"></script>

    4 

    5     <script src="scripts/jquery.flexigrid.js" type="text/javascript"></script>

    6 

    7     <script type="text/javascript">

    8 

    9         $(document).ready(function(){

   10 

   11             $("#flex1").flexigrid

   12                 (

   13                     {

   14                         url: ‘GetData.aspx’,

   15                         dataType: ‘xml’,

   16                         colModel : [

   17                                 {display: 'ISO', name : 'iso', width : 40, sortable : true, align: 'center'},

   18                                 {display: 'Name', name : 'name', width : 180, sortable : true, align: 'left'},

   19                                 {display: 'Printable Name', name : 'printable_name', width : 120, sortable : true, align: 'left'},

   20                                 {display: 'ISO3', name : 'iso3', width : 130, sortable : true, align: 'left'},

   21                                 {display: 'Number Code', name : 'numcode', width : 80, sortable : true, align: 'right'}

   22                             ],

   23 

   24                         /*searchitems : [

   25                                 {display: 'ISO', name : 'iso'},

   26                                 {display: 'Name', name : 'name', isdefault: true}

   27                             ],*/

   28                         sortname: "iso",

   29                         sortorder: "asc",

   30                         usepager: true,

   31                         title: ‘Countries’,

   32                         useRp: true,

   33                         rp: 15,

   34                         showTableToggleBtn: true,

   35                         width: 700,

   36                         height: 400

   37                     }

   38                 );

   39         });

   40 

   41     </script>

The grid is going to get its data from an aspx file called "GetData.aspx". In the Page_Load(..) event of this page, generate the XML and send it back to the requesting page.

    1 int page = int.Parse( Request.Form[ "page" ].ToString() );

    2             int rp = int.Parse( Request.Form[ "rp" ].ToString() );

    3             string sortname = Request.Form[ "sortname" ].ToString();

    4             string sortorder = Request.Form[ "sortorder" ].ToString();

    5 

    6             string sort = String.Format( "ORDER BY {0} {1}", sortname, sortorder );

    7 

    8             if( page == null )

    9                 page = 1;

   10 

   11             if( rp == null )

   12                 rp = 10;

   13 

   14             int start = ( ( page - 1 ) * rp );

   15 

   16             string limit = String.Format( "LIMIT {0}, {1}", start, rp );

   17 

   18             Response.ClearHeaders();

   19             Response.AppendHeader( "Expires", "Mon, 26 Jul 1997 05:00:00 GMT" );

   20             Response.AppendHeader( "Last-Modified", DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToLongTimeString() );

   21             Response.AppendHeader( "Cache-Control", "no-cache, must-revalidate" );

   22             Response.AppendHeader( "Pragma", "no-cache" );

   23             Response.AppendHeader( "Content-type", "text/xml" );

   24 

   25 

   26             // Generating XML Data

   27 

   28             EnumerableRowCollection<DataRow> data = GetCountryDataTable(sort, limit);

   29 

   30             XDocument xmlDoc = new XDocument(

   31                 new XDeclaration("1.0", "utf-8", "yes"),

   32 

   33                     new XElement("rows",

   34                         new XElement("page", page.ToString()),

   35                         new XElement("total", GetTotalRecords().ToString()),

   36                         data.Select(row => new XElement("row", new XAttribute("id", row["iso"].ToString()),

   37                                                           new XElement("cell", row["iso"].ToString()),

   38                                                           new XElement("cell", row["name"].ToString()),

   39                                                           new XElement("cell", row["printable_name"].ToString()),

   40                                                           new XElement("cell", row["iso3"].ToString()),

   41                                                           new XElement("cell", row["numcode"].ToString())

   42                                                         )

   43                                     )

   44                         )

   45             );

   46 

   47             Response.Write(xmlDoc);

   48             Response.End();

Here’s the function that returns the DataRow collection.

    1 private EnumerableRowCollection<DataRow> GetCountryDataTable( string sort, string limit )

    2         {

    3             using( DBM.SqlCommandEx sqlCmd = new DBM.SqlCommandEx( String.Format( “SELECT iso,name,printable_name,iso3,numcode FROM country {0} {1}”, sort, limit ) ) )

    4             {

    5                 return sqlCmd.GetDataTable().AsEnumerable();

    6             }

    7         }

Finally, I used LINQ to create the XML document but you can do it using Strings or any other method you prefer. 

Happy Programming!


visitor stats
Raihan Iqbal Original Theme By Mukkamu