源码网,源码论坛,源码之家,商业源码,游戏源码下载,discuz插件,棋牌源码下载,精品源码论坛

 找回密码
 立即注册
查看: 406|回复: 22

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

[复制链接]

7万

主题

861

回帖

32万

积分

论坛元老

Rank: 8Rank: 8

积分
329525
发表于 2007-4-16 00:00:00 | 显示全部楼层 |阅读模式
利用.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();
          }
      }

回复

使用道具 举报

0

主题

2万

回帖

120

积分

注册会员

Rank: 2

积分
120
发表于 2022-8-14 06:01:52 | 显示全部楼层
而非为吾问无为谓娃娃
回复 支持 反对

使用道具 举报

15

主题

2万

回帖

122

积分

注册会员

Rank: 2

积分
122
发表于 2022-12-1 13:12:04 | 显示全部楼层
看看看看
回复 支持 反对

使用道具 举报

2

主题

2万

回帖

347

积分

中级会员

Rank: 3Rank: 3

积分
347
发表于 2023-7-31 03:07:40 | 显示全部楼层
看到这帖子真是高兴!
回复 支持 反对

使用道具 举报

1

主题

2万

回帖

69

积分

注册会员

Rank: 2

积分
69
发表于 2023-8-22 01:08:39 | 显示全部楼层
。。。。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

7

主题

2万

回帖

398

积分

中级会员

Rank: 3Rank: 3

积分
398
发表于 2023-9-23 12:05:13 | 显示全部楼层
啦啦啦啦啦德玛西亚
回复 支持 反对

使用道具 举报

0

主题

1万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2023-12-1 09:38:03 | 显示全部楼层
1312315458748777
回复 支持 反对

使用道具 举报

2

主题

2万

回帖

347

积分

中级会员

Rank: 3Rank: 3

积分
347
发表于 2024-1-6 16:46:36 | 显示全部楼层
挺不错的东西
回复 支持 反对

使用道具 举报

0

主题

2万

回帖

66

积分

注册会员

Rank: 2

积分
66
发表于 2024-3-5 05:59:47 | 显示全部楼层
2222222222222222
回复 支持 反对

使用道具 举报

0

主题

2万

回帖

61

积分

注册会员

Rank: 2

积分
61
发表于 2024-4-10 21:04:51 | 显示全部楼层
而非为吾问无为谓娃娃
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

手机版|小黑屋|网站地图|源码论坛 ( 海外版 )

GMT+8, 2024-11-24 10:51 , Processed in 0.100699 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表