ASP.NET 2.0,C#----图像特效处理
来源:互联网 发布:npm安装node sass失败 编辑:程序博客网 时间:2024/06/05 10:56
利用.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#----图像特效处理
- C#.NET图像处理
- 图像特效处理
- Android中几种图像特效处理
- Android中几种图像特效处理
- Android中几种图像特效处理
- Unity3D图像后处理特效
- Unity3D图像后处理特效
- Android中几种图像特效处理
- Android中几种图像特效处理
- Android中几种图像特效处理
- Android中几种图像特效处理
- 图像处理之LOMO特效
- 如何实现C#.net图像处理
- android图像处理及特效处理收集
- Android图像处理之色彩特效处理
- Android图像处理之图形特效处理
- Android图像处理之画笔特效处理
- 第13篇 Tython (教程lesson 5)
- 第14篇 .在PC上显示数据 (教程lesson 6)
- 【转载】解析Caliburn.Micro(一)
- Android下uninstall failure
- Windows 下python开发环境搭建-Python sqlalchemy mysql-python wingIDE
- ASP.NET 2.0,C#----图像特效处理
- LINUX ulimit命令
- wxWidgets自定义的窗口事件--转帖
- 关于拷贝构造函数和赋值运算符
- 可编辑单元格的CListCtrl控件
- 为CListCtrl单元格添加提示信息的类
- oracle tree计算叶子节点到根节点的乘积
- FileUtils类对SD卡上文件的一些操作(不全)
- Flex页面的切换