ASP.NET 2.0,C#----图像特效处理

也许你想成为太阳,可你却只是一颗星辰;也许你想成为大树,可你却是一棵小草。于是,你有些自卑。其实,你和别人一样,也是一片风景:做不了太阳,就做星辰,在自我的星座发光发热;做不了大树,就做小草,以自我的绿色装点期望……

利用.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(); } }

以上就是ASP.NET 2.0,C#----图像特效处理。我们不能总是生活在自己的想象之中,不能虚幻地设想如果自己去做某一件事一定会比别人做得好。在想象之后,更加重要的是把思想转化为行动,一步一步地去接近目标。更多关于ASP.NET 2.0,C#----图像特效处理请关注haodaima.com其它相关文章!

您可能有感兴趣的文章
ASP.NET轻量级MVC框架Nancy的基本用法

使用grpcui测试ASP.NET core的gRPC服务

ASP.NET Core中的对象池介绍

asp.net中MVC的处理流程详解

ASP.NET Core的日志系统介绍