注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

我只是一个人

我爱一个人

 
 
 

日志

 
 

创建水印图主要使用的方法  

2011-02-21 21:03:19|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

using System;
using System.Web;

///引入新的命名空间
using System.Drawing;
using System.IO;
using ASPNET3DBBook;
using System.Data.SqlClient;

public partial class CreateWatermarkImage : System.Web.UI.Page
{
 string imageIDString = string.Empty;
 string filename = string.Empty;
 protected void Page_Load(object sender,EventArgs e)
 {
  if(Request.Params["ImageID"] != null)
  {   ///获取参数
   imageIDString = Request.Params["ImageID"].ToString();
  }
  if(!Page.IsPostBack)
  {
   byte[] data = GetImageData(imageIDString);
   ///保存水印图的地址
   string watermarkUrl = SampleSystem.WATERMARKIMAGEURL + filename;
   string watermarkPath = Server.MapPath(watermarkUrl);
   ///创建水印图,其中水印字符串为图片的名称
   CreateWatermarkPicture(data,watermarkPath,filename);
   ///修改图片的水印图地址
   ImageOperation image = new ImageOperation();
   image.UpdateWatermarkUrl(Int32.Parse(imageIDString),watermarkUrl);
   ///输出创建水印图的结果
   Response.Write("创建图像(" + filename + ")的水印图成功,保存为文件:" + watermarkUrl + "<br />");
   ///显示水印图片
   img.ImageUrl = watermarkUrl;
  }
 }

 private byte[] GetImageData(string imageIDString)
 {   ///获取文件的数据
  ImageOperation image = new ImageOperation();
  SqlDataReader dr = image.GetSingleImage(Int32.Parse(imageIDString));
  if(dr == null) return null;

  ///定义保存文件数据的byte数组
  byte[] data = null;
  if(dr.Read())
  {   ///读取数据
   data = (byte[])dr["Data"];
   filename = dr["Name"].ToString();
  }
  dr.Close();
  return data;
 }

 /// <summary>
 /// 创建水印图
 /// </summary>
 /// <param name="data">源图的数据(二进制)</param>
 /// <param name="watermarkPath">保存水印图路径(物理路径)</param>
 /// <param name="watermark">水印文字</param>
 private void CreateWatermarkPicture(byte[] data,string watermarkPath,string watermark)
 {
  if(data == null || string.IsNullOrEmpty(watermarkPath) == true) return;
  ///创建源图
  MemoryStream stream = new MemoryStream(data);
  Image simage = Image.FromStream((Stream)stream);
  ///根据源图的宽度和高度创建一个新的bmp图片
  Image wimage = new Bitmap(simage.Width,simage.Height);
  ///创建Graphics对象g
  Graphics g = Graphics.FromImage(wimage);
  ///设置高质量插值法
  g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
  ///设置高质量,低速度呈现平滑程度
  g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
  ///清空画布,并把背景色设置为透明
  g.Clear(System.Drawing.Color.Transparent);
  ///创建水印图,并绘制源图
  g.DrawImage(simage,
   new System.Drawing.Rectangle(0,0,simage.Width,simage.Height),
   new System.Drawing.Rectangle(0,0,simage.Width,simage.Height),
   System.Drawing.GraphicsUnit.Pixel);

  ///创建字体和画笔
  Font font = new Font("宋体",48f,FontStyle.Bold);
  Brush brush = new SolidBrush(Color.Red);
  g.DrawString(watermark,font,brush,50,50);

  try
  {   ///保存水印图,其格式和原图格式相同。
   wimage.Save(watermarkPath,simage.RawFormat);
  }
  catch(Exception ex)
  {
   throw new Exception(ex.Message);
  }
  finally
  {   ///释放资源
   simage.Dispose();
   wimage.Dispose();
   g.Dispose();
  }
 }
}

  评论这张
 
阅读(68)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017