Pages

Subscribe:

Ads 468x60px

Thursday, March 15, 2012

how to re size the image while uploading in asp.net using c#

In this web programming tutorial we will learn that how can we resize the image while uploading to the server as per our requirements.
code for .cs file
using System;  
using System.Data;  
using System.Configuration;  
using System.Web;  
using System.Web.Security;  
using System.Web.UI;  
using System.Web.UI.HtmlControls;  
using System.Web.UI.WebControls;  
using System.Drawing;  
using System.Drawing.Drawing2D;  
using System.Drawing.Imaging;  
using System.IO;  
///   
/// Summary description for clsImageUpload : Credits : http://prajeeshkk.blogspot.com  
///   
public class clsImageUpload  
{  
string fileName;  
public clsImageUpload()  
{  
//  
// TODO: Add constructor logic here  
//  
}  
//This function is called from aspnet page, it takes directory name as parameter  
public string HandleUploadedFile(string directory)  
{  
// To get the root of the web site  
string root = HttpContext.Current.Server.MapPath("~/");  
// clean up the path  
if (!root.EndsWith(@"\"))  
root += @"\";  
// make a folder to store the images in  
string fileDirectory = root + @"\" + directory + "\\";  
// create the folder if it does not exist  
// make a link to the new file  
  
// loop through the file in the request  
for (int i = 0; i < HttpContext.Current.Request.Files.Count; i++)  
{  
// get the file instance  
HttpPostedFile fi = HttpContext.Current.Request.Files.Get(i);  
// create a byte array to store the file bytes  
byte[] fileBytes = new byte[fi.ContentLength];  
// fill the byte array  
using (System.IO.Stream stream = fi.InputStream)  
{  
stream.Read(fileBytes, 0, fi.ContentLength);  
}  
// create a random file name  
fileName = Guid.NewGuid().ToString();  
  
// write the resized file to the file system  
File.WriteAllBytes(fileDirectory + fileName + "_thumb.jpg", ResizeImageFile(fileBytes, 75));  
fileBytes = null;  
}  
return (fileName + "_thumb.jpg");  
}  
public void HandleUploadedFileUseExistingName(string directory, string fname)  
{  
// get the root of the web site  
string root = HttpContext.Current.Server.MapPath("~/");  
// clean up the path  
if (!root.EndsWith(@"\"))  
root += @"\";  
// make a folder to store the images in  
string fileDirectory = root + @"\" + directory + "\\";  
// loop through the file in the request  
for (int i = 0; i < HttpContext.Current.Request.Files.Count; i++)  
{  
// get the file instance  
HttpPostedFile fi = HttpContext.Current.Request.Files.Get(i);  
// create a byte array to store the file bytes  
byte[] fileBytes = new byte[fi.ContentLength];  
// fill the byte array  
using (System.IO.Stream stream = fi.InputStream)  
{  
stream.Read(fileBytes, 0, fi.ContentLength);  
}  
// create a random file name  
fileName = fname;  
// write the resized file to the file system  
File.WriteAllBytes(fileDirectory + fileName, ResizeImageFile(fileBytes, 75));  
fileBytes = null;  
}  
}  
/// This fuction returns a Byte array containing the resized file  
private static byte[] ResizeImageFile(byte[] imageFile, int targetSize)  
{  
using (System.Drawing.Image oldImage =  
System.Drawing.Image.FromStream(new MemoryStream(imageFile)))  
{  
//If you want to maintain the propotion use following code  
//Size newSize = CalculateDimensions(oldImage.Size, targetSize);  
//If you want to use a fixed size use following one  
Size newSize = GetDimension();  
using (Bitmap newImage =  
new Bitmap(newSize.Width,  
newSize.Height, PixelFormat.Format24bppRgb))  
{  
using (Graphics canvas = Graphics.FromImage(newImage))  
{  
canvas.SmoothingMode = SmoothingMode.AntiAlias;  
canvas.InterpolationMode = InterpolationMode.HighQualityBicubic;  
canvas.PixelOffsetMode = PixelOffsetMode.HighQuality;  
canvas.DrawImage(oldImage,  
new Rectangle(new Point(0, 0), newSize));  
MemoryStream m = new MemoryStream();  
newImage.Save(m, ImageFormat.Jpeg);  
return m.GetBuffer();  
}  
}  
}  
}  
/// This function Calculates the new size of the image based on the target size  
private static Size CalculateDimensions(Size oldSize, int targetSize)  
{  
Size newSize = new Size();  
if (oldSize.Height > oldSize.Width)  
{  
newSize.Width =  
(int)(oldSize.Width * ((float)targetSize / (float)oldSize.Height));  
newSize.Height = targetSize;  
}  
else  
{  
newSize.Width = targetSize;  
newSize.Height =  
(int)(oldSize.Height * ((float)targetSize / (float)oldSize.Width));  
}  
return newSize;  
}  
//Dimension of the images can be set here  
private static Size GetDimension()  
{  
Size newSize = new Size();  
newSize.Width = 100;  
newSize.Height = 100;  
return newSize;  
}  
}  

No comments:

Post a Comment