原文链接http://weblogs.asp.net/markmcdonnell/archive/2008/03/09/resize-image-before-uploading-to-server.aspx
这是我在一个国外博客上看到的一篇博文。。意思是将客户端上传的图片在上传前调整大小以节省服务端空间但是图片大小仍然上传。 一篇非常棒的article.. 我重新整理了一下。
1.首先创建一个名为"ImageUpload.aspx" Web窗体.
ImageUpload.aspx 代码
<div>
<asp:FileUpload ID="FileUpload" runat="server" />
<br /><br />
<asp:Button ID="btnUpload" runat="server" Text="Upload!" OnClick="UploadFile" />
<br /><br />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<br /><br />
<asp:Image ID="Image1" ImageUrl="" runat="server" Visible="false" />
</div>
ImageUpload.aspx.cs 代码
protected void UploadFile(object sender, EventArgs e)
{
//First we check to see if the user has selected a file
if (FileUpload.HasFile)
{
//Find the fileUpload control
string filename = FileUpload.FileName;
//Check if the directory we want to the image uploaded to actually exists or not
if (!Directory.Exists(Server.MapPath(@"./Upload")))
{
//if it doesnt then we just crate it before going any futher
Directory.CreateDirectory(Server.MapPath(@"./Upload"));
}
//Specify the upload directory
string directory = Server.MapPath(@"./Upload\");
//Create a bitmap of the content of the fileUpload control in memory
Bitmap originalBMP = new Bitmap(FileUpload.FileContent);
int thumbnailSize = 250;
int newWidth, newHeight;
if (originalBMP.Width > originalBMP.Height)
{
newWidth = thumbnailSize;
newHeight = originalBMP.Height * thumbnailSize / originalBMP.Width;
}
else
{
newWidth = originalBMP.Width * thumbnailSize / originalBMP.Height;
newHeight = thumbnailSize;
}
// Create a new bitmap which will hold the previous resized bitmap
Bitmap newBMP = new Bitmap(originalBMP, newWidth, newHeight);
// Create a graphic based on the new bitmap
Graphics oGraphics = Graphics.FromImage(newBMP);
// Set the properties for the new graphic file
oGraphics.SmoothingMode = SmoothingMode.AntiAlias; oGraphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
// Draw the new graphic based on the resized bitmap
oGraphics.DrawImage(originalBMP, 0, 0, newWidth, newHeight);
// Save the new graphic file to the server
newBMP.Save(directory + filename);
// Once finished with the bitmap objects, we deallocate them.
originalBMP.Dispose();
newBMP.Dispose();
oGraphics.Dispose();
// Write a message to inform the user all is OK
Label1.Text = "File Name: <b style='color: red;'>" + filename + "</b><br>";
Label1.Text += "Content Type: <b style='color: red;'>" + FileUpload.PostedFile.ContentType + "</b><br>";
Label1.Text += "File Size: <b style='color: red;'>" + FileUpload.PostedFile.ContentLength.ToString() + "</b>";
// Display the image to the user
Image1.Visible = true;
Image1.ImageUrl = @"./Upload/" + filename;
}
else
{
Label1.Text = "No file uploaded!";
}
}
在WIN7 + VS 2008调试通过