当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > ASP.NET 2.0,C#----图像特效处理

ASP.NET
利用Timer在ASP.NET中实现计划任务的方法
asp.net下出现其中的组件“访问被拒绝”的解决方法
学习使用ASP.NET 2.0的本地化
asp.net 1.1/ 2.0 中快速实现单点登陆
ASP.NET用户控件技术
asp.net 2.0 中的URL重写以及urlMappings问题
asp.net 的错误处理机制讲解
asp.net下cookies的丢失和中文乱码
用WebClient.UploadData方法上载文件数据的方法
用程序修改IIS目录的Asp.Net版本
ASP.NET中常用的优化性能的方法
asp.net下URL处理两个小工具方法
asp.net下DataSet.WriteXml(String)与(Stream)的区别
asp.net下用DataSet生成XML的问题
从别人那拷下来的几点Session使用的经验
ASP.net在页面所有内容生成后、输出内容前对页面内容进行操作
asp.net(c#)Enterprise Library 3.0 下载
近几天对DataSet的新认识
.net下实现Word动态填加数据打印
ASP.NET 链接 Access 数据库路径问题最终解决方案

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-11   浏览: 160 ::
收藏到网摘: n/a

利用.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("/upload/tech/20091011/20091011143606_941e1aaaba585b952b62c14a3a175a61.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("/upload/tech/20091011/20091011143606_e2ef524fbf3d9fe611d5a8e90fefdc9c.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg);
MessageShow("已经生成水印图片,路径为" + @Server.MapPath("/upload/tech/20091011/20091011143607_07e1cd7dca89a1678042477183b7ac3f.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("/upload/tech/20091011/20091011143607_e07413354875be01a996dc560274708e.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg);
MessageShow("已经生成图片,路径为" + @Server.MapPath("/upload/tech/20091011/20091011143607_e07413354875be01a996dc560274708e.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("/upload/tech/20091011/20091011143608_bd686fd640be98efaae0091fa301e613.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg);
MessageShow("已经生成图片,路径为" + @Server.MapPath("/upload/tech/20091011/20091011143608_bd686fd640be98efaae0091fa301e613.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("/upload/tech/20091011/20091011143609_74bba22728b6185eec06286af6bec36d.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg);
MessageShow("已经生成图片,路径为" + @Server.MapPath("/upload/tech/20091011/20091011143609_74bba22728b6185eec06286af6bec36d.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("/upload/tech/20091011/20091011143613_85fc37b18c57097425b52fc7afbb6969.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg);
MessageShow("已经生成图片,路径为" + @Server.MapPath("/upload/tech/20091011/20091011143613_85fc37b18c57097425b52fc7afbb6969.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("/upload/tech/20091011/20091011143613_3416a75f4cea9109507cacd8e2f2aefc.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg);
MessageShow("已经生成图片,路径为" + @Server.MapPath("/upload/tech/20091011/20091011143613_3416a75f4cea9109507cacd8e2f2aefc.jpg").Replace("\\", "\\\\"));

}
catch (Exception ex)
{
MessageShow("生成图片错误!" + ex.Message);
throw;
}
graphics.Dispose();
bitmap.Dispose();
}
}