『QQ:1353814576』

.NET 5 web环境 Graphics上实现图片实时添加文字水印功能


C#使用Graphics 实现图片实时添加文字水印效果

最近给博客所有图片加上了水印标记,因为博客被采集蜘蛛机器人光顾了 看到统计数据基本是全站被爬取完了

既开心又忧愁,开心的是至少说明博客质量还行,起码人家愿意花点时间来抓,不开心的是自己用爱发电写了几年的东西(有时候一篇需要憋好久才写的出来) 就被人短短几秒拿去了 唉。。。。

因为工作关系 也做过爬虫类的程序 其实也知道防屏蔽是一件吃力不讨好的事情(基本只要能让能正常访问眼睛看到 就能给抓下来,当然也是没想到会有人对我的博客内容感兴趣,因此之前基本也没对这方面做应对)想着也不能完全放任,就对文章图片加了水印 以及文章内容添加源地址标记

下面是本博客对图片实时添加水印然后以文件流的方式返回给客户端的代码

       public FileStreamResult Get()
        {
            string FileLoction=图片地址
            System.IO.FileStream fileStream = new System.IO.FileStream(FileLoction, FileMode.Open,
			FileAccess.ReadWrite, FileShare.ReadWrite);
            Image MarkImage = Image.FromStream(fileStream);
            {
                using (Graphics g = Graphics.FromImage(MarkImage))
                {
                    g.SmoothingMode = SmoothingMode.HighSpeed;
                    g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
                    g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
                    g.PixelOffsetMode = PixelOffsetMode.HighQuality;
                    g.DrawString("Yuan天空博客", new Font("Verdana", MarkImage.Height/20, FontStyle.Bold), 
					new SolidBrush(Color.LightGray), new PointF(20, 20));
                }
            }
            MemoryStream stream = new MemoryStream();
            MarkImage.Save(stream, ImageFormat.Jpeg);
            byte[] data = new byte[stream.Length];
            stream.Seek(0, SeekOrigin.Begin);
            stream.Read(data, 0, Convert.ToInt32(stream.Length));
            stream.Position = 0;
            return new FileStreamResult(stream, "image/jpeg");
        }