<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title>无标题页</title>
<script language="javascript" type="text/javascript" > function $(o){return document.getElementById(o);} function CheckImgCss(o,img) { if (!//.((jpg)|(bmp)|(gif)|(png))$/ig.test(o.value)) { alert('只能上传jpg,bmp,gif,png格式图片!'); o.outerHTML = o.outerHTML; } else { $(img).filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src=o.value; //$('Image1').src = o.value;//这里IE7已经不支持了。所以才有上面的方法。 } } </script>
</head><body bgcolor="White"> <form id="form1" runat="server"> <div> <h1> 一次上传多个图片并预览,请选择图片:</h1> <asp:FileUpload ID="FileUpload1" οnchange="CheckImgCss(this, 'img');" runat="server" /> <asp:FileUpload ID="FileUpload2" οnchange="CheckImgCss(this, 'img');" runat="server" /> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上传" /> <div id="img" style="filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=<%= pic%>,sizingMethod=scale); width: 102px; height: 100px;"> </div> </div> </form></body>
using System;using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Drawing;
public partial class Default2 : System.Web.UI.Page{
//该变量用来修改的的时候的默认值。例如上传自己的头像,如果用户修改头像,这里可以显示他原来的头像。 public string pic = "http://www.svnhost.cn/images/logo.gif";
protected void Page_Load(object sender, EventArgs e) { 保存在数据库中的文件路径 //ArrayList arrFilePath = new ArrayList(); //arrFilePath = myCommonMethod.UploadPic(Files, "/UpLoads/UpPicture/"); 获取文件名称 //string fileName = arrFilePath[0].SubString(arrFilePath[0].LastIndexOf("/") + 1); 源图路径(物理路径) //string originalImagePath = Request.PhysicalApplicationPath + "/UpLoads/UpPicture/" + fileName; 缩略图路径(物理路径) //string thumbnailPath = Request.PhysicalApplicationPath + "/UpLoads/UpPicture/" + "thumb_" + fileName; 调用生成缩略图方法 //this.MakeThumbnail(originalImagePath, thumbnailPath, 120, 150, strMode, out outthumbnailPath);
} #region 生成缩略图 ///<summary> /// 生成缩略图 /// </summary> /// <param name="originalImagePath">源图路径(物理路径)</param> /// <param name="thumbnailPath">缩略图路径(物理路径)</param> /// <param name="width">缩略图宽度</param> /// <param name="height">缩略图高度</param> /// <param name="mode">生成缩略图的方式</param> public void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode, out string outthumbnailPath) { System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
int towidth = width; int toheight = height;
int x = 0; int y = 0; int ow = originalImage.Width; int oh = originalImage.Height;
switch (mode) { case "HW"://指定高宽缩放(可能变形) break; case "W"://指定宽,高按比例 toheight = originalImage.Height * width / originalImage.Width; break; case "H"://指定高,宽按比例 towidth = originalImage.Width * height / originalImage.Height; break; case "Cut"://指定高宽裁减(不变形) if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight) { oh = originalImage.Height; ow = originalImage.Height * towidth / toheight; y = 0; x = (originalImage.Width - ow) / 2; } else { ow = originalImage.Width; oh = originalImage.Width * height / towidth; x = 0; y = (originalImage.Height - oh) / 2; } break; default: break; }
//新建一个bmp图片 System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
//新建一个画板 Graphics g = System.Drawing.Graphics.FromImage(bitmap);
//设置高质量插值法 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空画布并以透明背景色填充 g.Clear(Color.Transparent);
//在指定位置并且按指定大小绘制原图片的指定部分 g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight), new Rectangle(x, y, ow, oh), GraphicsUnit.Pixel);
try { //以jpg格式保存缩略图 bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg); outthumbnailPath = thumbnailPath; } catch (System.Exception e) { throw e; } finally { originalImage.Dispose(); bitmap.Dispose(); g.Dispose(); } } #endregion
protected void Button1_Click(object sender, EventArgs e) { Random r = new Random(); //这样循环,可以同时上传多个文件。前台已经有文件格式的判断,有错误提示了。这里只要过滤掉非法文件即可,无需提示了。 for (int i = 0; i < Request.Files.Count; i++) { if (Request.Files[i].ContentLength > 0) { string ex = System.IO.Path.GetExtension(Request.Files[i].FileName).ToLower(); if (".jpg.gif.png.bmp".Contains(ex)) { string newFileName = DateTime.Now.ToString("yyyyMMddHHmmss") + r.Next(100, 999).ToString() + ex; //保存文件名到数据库 //xxxxxxxxxxxxxxxx //xxxxxxxxxxxxxxxx
Request.Files[i].SaveAs(Server.MapPath(newFileName)); pic = newFileName; } } } }}