`
流星剑
  • 浏览: 91802 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

给图片加水印

    博客分类:
  • .net
阅读更多

水印

在网络中发布资源时,比如图片,很多时候需要保护版权,即在图片上显示版权信息。要实现这样的效果,最简单有效的办法就是给图片添加水印(WaterMark),它和人民币中的水印原理一样,不容易涂改。通过制图软件一张一张地添加水印在技术上固然可行,但是工作量庞大,有时无法适应快速反应的要求,在实际操作中很少采用。在ASP.NET网站中,用户可以利用本小节的知识来实现自动添加水印。这里讲述两种水印:图像水印和文字水印。

图像水印就是在要保护的图片中加入另一个作为水印的图片,即两个图片合二为一,基基本原理就是将一个图片绘制到另一个图片当中,形成一个图片。比如有个风景图片,为了表示版权信息,用户希望在图片的右下角添加说明

 string file = Server.MapPath("~/04.jpg");
        string mark = Server.MapPath("~/mark.jpg");
        // 需要添加水印的图像
        System.Drawing.Image img = System.Drawing.Image.FromFile(file);
        // 水印图像
        System.Drawing.Image imgMark = System.Drawing.Image.FromFile(mark);
        // 创建Graphics对象
        Graphics g = Graphics.FromImage(img);
        // 将水印图像绘制到目标图像中去
        g.DrawImage(imgMark, img.Width - imgMark.Width, img.Height - imgMark.Height);
        // 原书示例代码中没有,没有这句则在非IE浏览器会出错
        Response.ContentType = "image/JPEG";
        //将图像加载到Response中
        img.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
        g.Dispose();

 

这里可以用DrawString方法来向图片绘制文本。为了使文字不至于影响图片效果,可以将其颜色设置为谈灰色,并适当调整透明度,参考代码如下:

string file = Server.MapPath("~/04.jpg");
        System.Drawing.Image img = System.Drawing.Image.FromFile(file);
        // 写文字的笔刷,透明度为100,蓝色
        Brush b = new SolidBrush(Color.FromArgb(100, Color.Blue));
        // 字体设置
        FontFamily ff = new FontFamily("华文琥珀");
        Font f = new Font(ff, 50, FontStyle.Bold);
        // 文字区域左上角坐标
        float x = 50;
        float y = 50;
        Graphics g = Graphics.FromImage(img);
        //设置Graphics对象
        g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
        g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
        // 文字
        g.DrawString("流星剑制作", f, b, new PointF(x, y));
        // 原书示例代码中没有,没有这句则在非IE浏览器会出错
        Response.ContentType = "image/JPEG";
        //将图像加载到Response中
        img.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
        g.Dispose();

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics