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

ASP.NET
ASP.NET错误处理:Runtime Error
如何使用ADO.NET Entity Framework从数据库中获取图片
ASP.NET教程:WaitHandle类
ASP.Net中Ado.Net Entity Framework实际项目应用释疑
ASP.NET页面中控制部分元素隐现的方法
asp.net网站开发中使用Sqlite嵌入式数据库
ASP.NET教程:调用WebService的源码
.NET中的垃圾回收
asp.net教程:编译错误同时存在于不同dll中
ASP.NET4.0新改进和新特性
ASP教程:防SQL注入
ASP.NET教程:HttpContext类Current属性
在Win2003 IIS 6.0中安装ASP.net环境
asp.net2.0中App_GlobalResources用途
利用Windows系统服务自动更新网站
无缝的缓存读取:双存储缓存策略
WebServices的性能特别慢是真的吗?
ASP.NET MVC的Web应用程序更直观
PHP和ASP.NET代码哪个运行速度更快?
ASP.NET常用代码

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-11   浏览: 61 ::
收藏到网摘: 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();
}
}