上传图片生成缩略图

来源:互联网 发布:java软件项目实战培训 编辑:程序博客网 时间:2024/04/27 14:51
 
 <summary>
/// 上传图片
/// </summary>
/// <param name="Path"></param>
/// <param name="filePic"></param>
/// <returns></returns>
public static string[] UploadPic(string Path, FileUpload filePic)
{
//原图
System.Drawing.Image original_image = null;
System.Drawing.Bitmap final_image
= null;
System.Drawing.Graphics graphic
= null;
MemoryStream ms
= null;
//文件类型
string preveiw = Path+"preview/";
string display = Path + "display/";
string print = Path + "print/";
string[] uploadPath = new string[3];
string filename;
try
{
#region 判断目录是否存在
if (System.IO.Directory.Exists(HttpContext.Current.Request.PhysicalApplicationPath + preveiw) == false)
{
System.IO.Directory.CreateDirectory(HttpContext.Current.Request.PhysicalApplicationPath
+ preveiw);
}
if (System.IO.Directory.Exists(HttpContext.Current.Request.PhysicalApplicationPath + display) == false)
{
System.IO.Directory.CreateDirectory(HttpContext.Current.Request.PhysicalApplicationPath
+ display);
}
if (System.IO.Directory.Exists(HttpContext.Current.Request.PhysicalApplicationPath + print) == false)
{
System.IO.Directory.CreateDirectory(HttpContext.Current.Request.PhysicalApplicationPath
+ print);
}
#endregion

HttpPostedFile image_upload
= filePic.PostedFile;

original_image
= System.Drawing.Image.FromStream(image_upload.InputStream);

#region 计算缩略各种图宽、高
//preview
int preview_width = original_image.Width / 4;
int preview_height = original_image.Height / 4;
//display
int r=Convert.ToInt32(Math.Max(original_image.Width / 200, original_image.Height / 200));
r
= (r == 0 ? 1 : r);
int display_width = original_image.Width / r;
int display_height = original_image.Height / r;
#endregion

#region 上传图片
//preview
final_image = new System.Drawing.Bitmap(preview_width, preview_height);
graphic
= System.Drawing.Graphics.FromImage(final_image);
graphic.FillRectangle(
new System.Drawing.SolidBrush(System.Drawing.Color.Black), new System.Drawing.Rectangle(0, 0, preview_width, preview_height));
graphic.InterpolationMode
= System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
graphic.DrawImage(original_image,
0, 0, preview_width, preview_height);

filename
= FileName;
final_image.Save(System.IO.Path.Combine(HttpContext.Current.Request.PhysicalApplicationPath, preveiw
+ filename), System.Drawing.Imaging.ImageFormat.Jpeg);
final_image
= null;
graphic
= null;
uploadPath[
0] = preveiw + filename;
//display
final_image = new System.Drawing.Bitmap(display_width, display_height);
graphic
= System.Drawing.Graphics.FromImage(final_image);
graphic.FillRectangle(
new System.Drawing.SolidBrush(System.Drawing.Color.Black), new System.Drawing.Rectangle(0, 0, display_width, display_height));
graphic.InterpolationMode
= System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
graphic.DrawImage(original_image,
0, 0, display_width, display_height);

final_image.Save(System.IO.Path.Combine(HttpContext.Current.Request.PhysicalApplicationPath, display
+ filename), System.Drawing.Imaging.ImageFormat.Jpeg);
final_image
= null;
graphic
= null;
uploadPath[
1] = display + filename;

//print
final_image = new System.Drawing.Bitmap(original_image.Width, original_image.Height);
graphic
= System.Drawing.Graphics.FromImage(final_image);
graphic.FillRectangle(
new System.Drawing.SolidBrush(System.Drawing.Color.Black), new System.Drawing.Rectangle(0, 0, original_image.Width, original_image.Height));
graphic.InterpolationMode
= System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
graphic.DrawImage(original_image,
0, 0,original_image.Width,original_image.Height);

final_image.Save(System.IO.Path.Combine(HttpContext.Current.Request.PhysicalApplicationPath, print
+filename), System.Drawing.Imaging.ImageFormat.Jpeg);
final_image
= null;
graphic
= null;
uploadPath[
2] = print + filename;

#endregion

return uploadPath;
}
catch (Exception ex)
{
System.Console.Error.Write(ex.Message);
return null;
}
}