利用.NET 提供的类,如Drawing.Bitmap ,Drawing.Bitmap 等,很容易就可以实现对图片的简单处理。包括打水印,放大缩小,等操作。
public partial class WebForm4 : System.Web.UI.Page { // 原始图片路径 private string path; private System.Drawing.Bitmap bitmap; private System.Drawing.Graphics graphics; string Message = "<script>alert(\"{0}\");</script>"; protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { this.txtPicPath.Text = Server.MapPath("/test.jpg"); } path = this.txtPicPath.Text.Trim(); if (!System.IO.File.Exists(path)) { MessageShow("指定的源文件不存在!"); return; } } // 打水印Logo protected void btnLogo_Click(object sender, EventArgs e) { string log = txtLog.Text.Trim(); if (log.Length < 1) { MessageShow("请输入水印字符!"); return; }
bitmap = new Bitmap(path); graphics = Graphics.FromImage(bitmap); graphics.DrawString(log, new Font("宋体", 16), System.Drawing.Brushes.GreenYellow, new PointF(bitmap.Width / 2 - (log.Length) * 5, bitmap.Height / 2)); try { bitmap.Save(Server.MapPath("./_Log.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg); MessageShow("已经生成水印图片,路径为" + @Server.MapPath("./_log.jpg").Replace("\\", "\\\\"));
} catch (Exception ex) { MessageShow("生成图片错误!" + ex.Message); throw; } graphics.Dispose(); bitmap.Dispose(); } private void MessageShow(string msg) { Page.ClientScript.RegisterStartupScript(Page.GetType(), "Message", string.Format(Message, msg));
} //放大X*X倍 protected void btnBig_Click(object sender, EventArgs e) { int i = int.Parse(txtBig.Text.Trim()); System.Drawing.Image img = System.Drawing.Image.FromFile(path); bitmap = new Bitmap(img.Width * i, img.Height * i); graphics = Graphics.FromImage(bitmap); graphics.DrawImage(img, 0, 0, img.Width * i, img.Height * i); try { bitmap.Save(Server.MapPath("./_Big.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg); MessageShow("已经生成图片,路径为" + @Server.MapPath("./_Big.jpg").Replace("\\", "\\\\"));
} catch (Exception ex) { MessageShow("生成图片错误!" + ex.Message); throw; } graphics.Dispose(); bitmap.Dispose(); }
//缩小为原始图像的1/(X*X) protected void btnSmall_Click(object sender, EventArgs e) { float i = float.Parse(txtBig.Text.Trim()); System.Drawing.Image img = System.Drawing.Image.FromFile(path); int w = Convert.ToInt32(img.Width / i); int h = Convert.ToInt32(img.Height / i);
// 防止过度变形 if (w < 1) w = 10; if (h < 1) h = 0; bitmap = new Bitmap(w, h); graphics = Graphics.FromImage(bitmap); graphics.DrawImage(img, 0, 0, w, h); try { bitmap.Save(Server.MapPath("./_Small.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg); MessageShow("已经生成图片,路径为" + @Server.MapPath("./_Small.jpg").Replace("\\", "\\\\"));
} catch (Exception ex) { MessageShow("生成图片错误!" + ex.Message); throw; } graphics.Dispose(); bitmap.Dispose(); } //倾斜( 右转90度) protected void btnIncline_Click(object sender, EventArgs e) { System.Drawing.Image img = System.Drawing.Image.FromFile(path); // 图像旋转,可以利用RotateFlipType的枚举值,在编程的时候,IDE会自动显示每一个枚举的意思 img.RotateFlip(RotateFlipType.Rotate90FlipXY); bitmap = new Bitmap(img); graphics = Graphics.FromImage(bitmap); graphics.DrawImage(img, new Point(0, 0)); try { bitmap.Save(Server.MapPath("./_Incline.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg); MessageShow("已经生成图片,路径为" + @Server.MapPath("./_Incline.jpg").Replace("\\", "\\\\"));
} catch (Exception ex) { MessageShow("生成图片错误!" + ex.Message); throw; } graphics.Dispose(); bitmap.Dispose(); }
// 图像压扁 protected void btnStave_Click(object sender, EventArgs e) { System.Drawing.Image img = System.Drawing.Image.FromFile(path); // 宽度不变 int w = img.Width; // 高度为原始高度的1/2 int h = img.Height / 2;
// 防止过度变形 if (w < 1) w = 10; if (h < 1) h = 0; bitmap = new Bitmap(w, h); graphics = Graphics.FromImage(bitmap); graphics.DrawImage(img, 0, 0, w, h); try { bitmap.Save(Server.MapPath("./_Stave.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg); MessageShow("已经生成图片,路径为" + @Server.MapPath("./_Stave.jpg").Replace("\\", "\\\\"));
} catch (Exception ex) { MessageShow("生成图片错误!" + ex.Message); throw; } graphics.Dispose(); bitmap.Dispose(); } //图像拉宽 protected void btnElongate_Click(object sender, EventArgs e) { System.Drawing.Image img = System.Drawing.Image.FromFile(path); // 放大宽度 int w = img.Width / 2; // 高度不变 int h = img.Height;
// 防止过度变形 if (w < 1) w = 10; if (h < 1) h = 0; bitmap = new Bitmap(w, h); graphics = Graphics.FromImage(bitmap); graphics.DrawImage(img, 0, 0, w, h); try { bitmap.Save(Server.MapPath("./_Elongate.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg); MessageShow("已经生成图片,路径为" + @Server.MapPath("./_Elongate.jpg").Replace("\\", "\\\\"));
} catch (Exception ex) { MessageShow("生成图片错误!" + ex.Message); throw; } graphics.Dispose(); bitmap.Dispose(); } }
|