Image Upload & Resize in asp.net
Task: Upload
Image & Resize it proportionally.
Description: Now days we require upload product images in a E-Commerce Website & we want to resize it also. So we can resize image when uploaded by using admin panel.
Here I use below code to resize image with its
proportionally. So it will not stretch. This code is useful for jpg and png
images.
using System.Drawing;
protected void button_upload_image(object sender, EventArgs e)
{
if (FileUpload1.PostedFile.ContentLength != 0)
{
string temp = Server.MapPath(@"images\");
string path = temp + "hemant.jpg";
temp = temp + "temp.jpg";
FileUpload1.SaveAs(temp);
setimagesize(temp, path, 800, 600,400,300);
}
}
// Call this function for resizing ( compress height and width proportionally )
// destination and imagepath must be differ
protected void setimagesize(string imagepath, string destination, int maxwidth, int maxheight,int minwid,int minhight)
{
string path = imagepath.ToString();
string dest = destination.ToString();
System.Drawing.Image img1 = System.Drawing.Image.FromFile(path); // source of large image
int owd = Convert.ToInt32(img1.Width);
int oht = Convert.ToInt32(img1.Height);
// Compress Large Image Height/Width to according our canvas max(800*600)
int nwd, nht;
nwd = owd;
nht = oht;
if (owd > oht)
{
if (owd > maxwidth) // For Maximum width
{
nwd = maxwidth;
nht = oht * maxwidth / owd;
}
else if (owd < minwid) // For minimum width
{
nwd = minwid;
nht = oht * minwid / owd;
}
}
else
{
if (oht > maxheight) // For Maximum height
{
nht = maxheight;
nwd = owd * maxheight / oht;
}
else if (oht < minhight) // For Minimum width
{
nht = minhight;
nwd = owd * minhight / oht;
}
}
///////////////////////////
// Saving Compress Image
///////////////////////////////////////
Bitmap bmp = new Bitmap(nwd, nht);
System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bmp);
gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.Default;
gr.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.Default;
gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Default;
System.Drawing.Rectangle rectDestination = new System.Drawing.Rectangle(0, 0, nwd, nht);
gr.DrawImage(img1, rectDestination, 0, 0, owd, oht, GraphicsUnit.Pixel);
bmp.Save(dest, img1.RawFormat); //image size reduce by using this code changing by
bmp.Save(dest);
bmp.Dispose();
gr.Dispose();
img1.Dispose();
}