效果图:

思路:

1.获取图片

2.处理水印

3.保存处理的图片

代码:

获取图片:

private void button1_Click(object sender, EventArgs e){OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.Multiselect = true;//文件格式openFileDialog.Filter = "所有文件|*.*";//还原当前目录openFileDialog.RestoreDirectory = true;if (openFileDialog.ShowDialog() == DialogResult.OK){string oldImgPath = openFileDialog.FileName;this.textBox1.Text = oldImgPath;this.textBox2.Text = this.textBox2.Text += "\r\n" + "图片路径:" + oldImgPath;}}

处理水印并保存:

private void button2_Click(object sender, EventArgs e){Image oldImg = Image.FromFile(this.textBox1.Text);this.textBox2.Text = this.textBox2.Text += "\r\n" + "去除水印...";if (this.textBox3.Text == "255,255,255" || this.textBox3.Text == string.Empty){this.textBox2.Text += "\r\n" + "请设置水印的rgb值";return;}string[] rgbItem = this.textBox3.Text.Split(',');Image newImg = imgHelper.SetImageColorAll(oldImg, Color.FromArgb(Convert.ToInt32(rgbItem[0]),Convert.ToInt32(rgbItem[1]),Convert.ToInt32(rgbItem[2])), Color.White, 20);this.textBox2.Text = this.textBox2.Text += "\r\n" + "去除水印成功,正在保存...";string savPath = this.textBox1.Text.Substring(0, this.textBox1.Text.LastIndexOf('\\'));if (this.textBox4.Text == "格式:文件名+.png/.jpg" || this.textBox4.Text == string.Empty){this.textBox2.Text += "\r\n" + "未设置保存的文件名,自动保存的文件名为:cs.png";return;}savPath = Path.Combine(savPath,this.textBox4.Text);//合成路径newImg.Save(savPath);this.textBox2.Text = this.textBox2.Text += "\r\n" + "保存成功!";}//处理水印类

public class imgHelper
{
public static Image SetImageColorAll(Image p_Image, Color p_OdlColor, Color p_NewColor, int p_Float)
{
int _Width = p_Image.Width;
int _Height = p_Image.Height;

Bitmap _NewBmp = new Bitmap(_Width, _Height, PixelFormat.Format32bppArgb);
Graphics _Graphics = Graphics.FromImage(_NewBmp);
_Graphics.DrawImage(p_Image, new Rectangle(0, 0, _Width, _Height));
_Graphics.Dispose();
//图片背景处理的操作
BitmapData _Data = _NewBmp.LockBits(new Rectangle(0, 0, _Width, _Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
_Data.PixelFormat = PixelFormat.Format32bppArgb;
int _ByteSize = _Data.Stride * _Height;
byte[] _DataBytes = new byte[_ByteSize];
Marshal.Copy(_Data.Scan0, _DataBytes, 0, _ByteSize);

int _WhileCount = _Width * _Height;
int _Index = 0;
for (int i = 0; i != _WhileCount; i++)
{
Color _Color = Color.FromArgb(_DataBytes[_Index + 3], _DataBytes[_Index + 2], _DataBytes[_Index + 1], _DataBytes[_Index]);
if (ScanColor(_Color, p_OdlColor, p_Float))
{
_DataBytes[_Index + 3] = (byte)p_NewColor.A;
_DataBytes[_Index + 2] = (byte)p_NewColor.R;
_DataBytes[_Index + 1] = (byte)p_NewColor.G;
_DataBytes[_Index] = (byte)p_NewColor.B;
}
_Index += 4;
}
Marshal.Copy(_DataBytes, 0, _Data.Scan0, _ByteSize);
_NewBmp.UnlockBits(_Data);
return _NewBmp;
}

private static bool ScanColor(Color p_CurrentlyColor, Color p_CompareColor, int p_Float)
{
int _R = p_CurrentlyColor.R;
int _G = p_CurrentlyColor.G;
int _B = p_CurrentlyColor.B;

return (_R <= p_CompareColor.R + p_Float && _R >= p_CompareColor.R - p_Float) && (_G <= p_CompareColor.G + p_Float && _G >= p_CompareColor.G - p_Float) && (_B <= p_CompareColor.B + p_Float && _B >= p_CompareColor.B - p_Float);

}
}

转载于:https://www.cnblogs.com/newrohlzy/p/10126700.html

winform工具1-图片去除水印相关推荐

  1. 超好用的视频图片去除水印软件免费下载

    在别的地方看到的破解国外一款 超好用的视频图片去除水印 的工具. 废话不多说直接开始说使用说明: 安装我就不说了 文件夹名字有提示. 直接开始说使用方法. 打开软件后 提示"add Imag ...

  2. Cython 图片去除水印

    图片去除水印,此方法只支持去除那些水印色彩较为单一或者重复区域较多的图片. 思路: 计算并统计水印的颜色值,水印重复区域颜色出现较多 设置阈值,将重复较多的颜色值用图片最多的颜色值(图片主色彩)替换. ...

  3. 图片在线去水印-一键图片去除水印工具

    我们经常会看到喜欢的图片带了水印,这让很多人很无奈,不得不舍弃喜欢的图片.今天小编教大家两个方法,即便是有水印的图片也可以用软件处理掉.那么怎么去水印呢?接下来详细为大家介绍去水印的详细方法. 一.水 ...

  4. 分享图片去水印几个工具-图片去除水印最好用的工具

    日常生活中,我们说的水印是指:是来着平台.作者出于强调平台出处.创作者目的,对图片.视频加的水印.不过,水印的存在会影响整体的观感.如果你想将这些素材用于个人收藏.二次创作,这就需要进行去水印的处理. ...

  5. SEO文章图片添加水印,批量SEO文章图片去除水印

    SEO文章图片该怎么搭配,SEO文章该怎么写,对我们SEOER来说,SEO文章图片是我们比较重要的一环,不管是我们网站内容的优化,还是我们外部advertorial的书写,都跟SEO文章和SEO文章图 ...

  6. PHP 图片去除水印 去除logo

    使用插件 ffmpeg 点这里 不使用插件 也可以 <?phpfunction CLEAR_ICO($filename,$savename,$Clear_W,$Clear_H,$Clear_X, ...

  7. 解决CSDN markdown编辑器插入图片去除水印

    简介 最近有小伙伴们使用新版markdown编辑器插入图片后还有博客字样的水印.今天就是要去除水印,谁来都不好使,就是要去除水印.如果该文章能够解决小伙伴的问题记得收藏关注一波 . 1. 问题描述 上 ...

  8. 破解Foxit PDF SDK(DLL) 3.1, PDF转换到图片, 去除水印

    将PDF转换到图片, 使用Foxit PDF Foxit PDF SDK(DLL) 3.1最新版本发布了, 使用它的免费版本Render PDF页面到图像的话,会有一个水印. 摸了几个小时,终于将这个 ...

  9. 图片去除水印,Python代码

    如果您想要在 Python 中去除图像的水印,可以使用以下代码.请注意,这只是一个示例,因为去除水印的方法因图像而异. from PIL import Image# 打开带水印的图像 image = ...

最新文章

  1. UML序列图总结(Loop、Opt、Par和Alt)
  2. 基于ServletJsp的网上书店设计(一)
  3. elasticsearch5安装和elasticsearch-analysis-ik中文分词插件安装
  4. CSS-10-内边距
  5. VMware虚拟机12安装linux系统
  6. 运行单个源文件_使用一个命令执行单个Java源文件
  7. 河北软件职业技术学院计算机专业分数线,河北软件职业技术学院历年分数线 2021河北软件职业技术学院录取分数线...
  8. CV《物体识别与检测4 - 人脸验证》
  9. 95-40-120-java.util.concurrent-线程-AbstractEventExecutor
  10. 高并发大容量 NoSQL 解决方案探索
  11. 我的 HTTP/1.1 好慢啊!
  12. Apache Shiro框架
  13. python实现规则引擎_几种开源规则引擎(BRE)的比较 转
  14. Web 服务器性能与站点访问性能的优化思路
  15. mongodb常用方法
  16. 攻击 xxs_“吃鸡”玩家被xxs故意炸倒,举报时出现提示,光子站在xxs一边!
  17. CESI: Canonicalizing Open Knowledge Bases using Embeddings and Side Information
  18. sublime3生成html头部按tab键没反应
  19. 【obs】OBS Library D3D11 OpenGL wrapper
  20. 深圳 IT 男打人后疯狂凡尔赛,还教育民警,这回把 IT 人的脸都丢尽了……

热门文章

  1. raft 有关竞选超时 vs 心跳超时的疑惑
  2. CentOS7搭建私有化Docker仓库Harbor
  3. ZJUT online OJ c++通关模拟题(problem1335-problem1516) 题解
  4. sklearn和libsvm吗_机器学习笔记(3)-sklearn支持向量机SVM
  5. java 检测表情符号_检测字符串中的字符是否为表情符号(使用Android)
  6. 移动终端软件测试基础知识,移动终端软件测试基础知识 - Mr.南柯 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  7. oracle SQL update一次性修改多个字段,数据来源于另一张表
  8. Android12(S)授权弹窗被悬浮窗遮挡导致无法点击问题分析
  9. linux ida和idr分配机制
  10. 15. Linux系统中的磁盘管理