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

    技术2022-05-19  21

    利用.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;}}// 打水印Logoprotected 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/2int 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();}}


    最新回复(0)