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#----图像特效处理