C#如何去除图片上的水印呢?该图片是一文章图片,上面的水印是有特征的
1.随机在各个段落之间的空行中出现,
2.水印文字为楷体或宋体
麻烦有经验的人给个解决思路或参考文档,谢谢,

解决方案 »

  1.   

    下面的代码中,加文字水印和加图片水印的代码不能共存
    我是为了方便显示才写在一块的    
    private void Btn_Upload_Click(object sender, System.EventArgs e)
            {
                if(UploadFile.PostedFile.FileName.Trim()!="")
                {
                    //上传文件
                    string extension = Path.GetExtension(UploadFile.PostedFile.FileName).ToUpper();
                    string fileName = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString();
                    string path = Server.MapPath(".") + "/UploadFile/" + fileName + extension;
                    UploadFile.PostedFile.SaveAs(path);                //加文字水印,注意,这里的代码和以下加图片水印的代码不能共存
                    System.Drawing.Image image = System.Drawing.Image.FromFile(path);
                    Graphics g = Graphics.FromImage(image);
                    g.DrawImage(image, 0, 0, image.Width, image.Height);
                    Font f = new Font("Verdana", 32);
                    Brush b = new SolidBrush(Color.White);
                    string addText = AddText.Value.Trim();
                    g.DrawString(addText, f, b, 10, 10);
                    g.Dispose();                //加图片水印
                    System.Drawing.Image image = System.Drawing.Image.FromFile(path);
                    System.Drawing.Image copyImage = System.Drawing.Image.FromFile( Server.MapPath(".") + "/Alex.gif");
                    Graphics g = Graphics.FromImage(image);
                    g.DrawImage(copyImage, new Rectangle(image.Width-copyImage.Width, image.Height-copyImage.Height, copyImage.Width, copyImage.Height), 0, 0, copyImage.Width, copyImage.Height, GraphicsUnit.Pixel);
                    g.Dispose();                //保存加水印过后的图片,删除原始图片
                    string newPath = Server.MapPath(".") + "/UploadFile/" + fileName + "_new" + extension;
                    image.Save(newPath);
                    image.Dispose();
                    if(File.Exists(path))
                    {
                        File.Delete(path);
                    }                Response.Redirect(newPath);
                }
            }
    来自:http://www.cnblogs.com/index/archive/2004/10/20/54498.aspx
      

  2.   

    去水印 很难实现的 你想下 你用ps去去除都麻烦 更不要说写程序来去除了新群DotNet Programmer 群号112850311
    欢迎DotNet程序员的加入,来吧,我们共同打造一个好的学习交流场所,我们真诚欢迎您的加入。
      

  3.   

    可以写个photoshop action来进行处理
      

  4.   

    我也在想这个事,只要水印是有规律特征的,程序应该是可以去的,曾看到一个贴,说用到水印提取算法、高斯算法、USM算法等,一下先。至少规律非常清楚的话可以用ps的批处理完成。
      

  5.   

    还真有拿电影说事的,电影里黑客靠猜密码都能掌握核按钮,你也信,水印加到图片上后就成为一张图片了,jpg是不分层的,你只能用图像识别算法去大致猜测水印的位置,如果水印加的时候还来点随机变形、调色、噪点什么的,就几乎是不可分辨的。这也就是网站验证码的原理。
      

  6.   

    当前技术下,连PS都做不到,更不要说C#了。最恨下某些图的时候打水印。唉。