【实例简介】C# 批量加水印,可以将文字或者图片设置为水印,且支持自定义水印位置(右下角、左下角、中间、右上角、左上角等等),且支持批量水印操作

文件:590m.com/f/25127180-487470299-b5177d(访问密码:551685)

【实例截图】


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace WaterMark
{
public partial class FrmMain : Form
{
public FrmMain()
{
InitializeComponent();
}

    private string fileName = string.Empty;//源文件包含路径private string logo = string.Empty;//图标水印文件private string[] files = null;//批量处理时文件组/// <summary>/// 窗体加载时/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void FrmMain_Load(object sender, EventArgs e){cbPosition.SelectedItem = "中间";}/// <summary>/// 浏览图片/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnBrowser_Click(object sender, EventArgs e){openFileDlg.InitialDirectory = @"c:\";openFileDlg.Filter = "jpg文件(*.jpg)|*.jpg|png文件(*.png)|*.png|bmp文件(*.bmp)|*.bmp|gif文件(*.gif)|*.gif";openFileDlg.RestoreDirectory = true;//保存上一次记录openFileDlg.ShowDialog(this);setBatch();}/// <summary>/// 提交数据/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnOK_Click(object sender, EventArgs e){string waterText = txtWaterText.Text;logo = txtWaterLogo.Text;if (!File.Exists(fileName)){MessageBox.Show(this, "原图片文件不存在!");txtFile.Focus();return;}if (rbWaterTextType.Checked && string.IsNullOrEmpty(waterText)){MessageBox.Show(this, "水印文字不能为空!");txtWaterText.Focus();return;}if (rbWaterPicType.Checked && string.IsNullOrEmpty(logo)){txtWaterLogo.Focus();MessageBox.Show(this, "选择图片水印类型,水印图不能为空!");return;}string savePath = string.Empty;string saveFold = string.Empty;string sFile = string.Empty; //openFileDlg.SafeFileName;//不带路径的文件名string newFold = "NewsWater";//新文件夹名称int len = fileName.Length;int index = fileName.LastIndexOf("\\");if (index > -1 && len > index){sFile = fileName.Substring(index   1, len - index-1);}string basePath = fileName.Substring(0, index);//基路径//选择位置ImageWater.MarkPosition position = ImageWater.MarkPosition.MP_Left_Bottom;position = (ImageWater.MarkPosition)(cbPosition.SelectedIndex   1);try{saveFold = basePath   "\\"   newFold;if (!Directory.Exists(saveFold))//加完水印后新建一个目标{Directory.CreateDirectory(saveFold);}if (chbIsBatch.Checked)//批量处理了{foreach (string file in files){len = file.Length;sFile = file.Substring(index, len - index);savePath = saveFold   sFile;//带\\sdd.jpg";if (rbWaterPicType.Checked)//图片水印{ImageWater.AddPicWatermarkAsJPG(fileName, logo, savePath, position);}else{ImageWater.AddTextWatermarkAsJPG(fileName, waterText, savePath, position);}}}else{savePath = saveFold   "\\"   sFile;if (rbWaterPicType.Checked)//图片水印{ImageWater.AddPicWatermarkAsJPG(fileName, logo, savePath, position);}else{ImageWater.AddTextWatermarkAsJPG(fileName, waterText, savePath, position);}}MessageBox.Show(this, "操作成功,保存在文件夹:"   saveFold);}catch (Exception ex){MessageBox.Show(this, "操作失败!"   ex.Message);}}/// <summary>/// 设置批量处理的时/// </summary>private void setBatch(){openFileDlg.Multiselect = chbIsBatch.Checked;txtFile.Text = fileName = openFileDlg.FileName;if (chbIsBatch.Checked){files = openFileDlg.FileNames;string temp = string.Empty;foreach (string file in files){temp  = file   "|";}if (temp.IndexOf("|") > 0){txtFile.Text = temp.TrimEnd('|');}}}/// <summary>/// 选择图片类型/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void rbWaterPicType_CheckedChanged(object sender, EventArgs e){txtWaterText.Enabled = rbWaterTextType.Checked;lblWaterText.Enabled = rbWaterTextType.Checked;lblWaterPic.Enabled = rbWaterPicType.Checked;txtWaterLogo.Enabled = rbWaterPicType.Checked;btnAddLogo.Enabled = rbWaterPicType.Checked;}/// <summary>/// 浏览图片水印图片按钮/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnAddLogo_Click(object sender, EventArgs e){openFileDlg.InitialDirectory = @"c:\";openFileDlg.RestoreDirectory = true;//保存上一次记录openFileDlg.Filter = "jpg文件(*.jpg)|*.jpg|png文件(*.png)|*.png|tif文件(*.tif)|*.tif|gif文件(*.gif)|*.gif";openFileDlg.ShowDialog(this);logo = txtWaterLogo.Text = openFileDlg.FileName;}/// <summary>/// 是否点击批量处理/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void chbIsBatch_CheckedChanged(object sender, EventArgs e){setBatch();}/// <summary>/// 关闭事件/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnClose_Click(object sender, EventArgs e){WinClose();}/// <summary>/// 关闭事件/// </summary>/// <param name="e"></param>protected override void OnClosing(CancelEventArgs e){WinClose();}private void WinClose(){this.Dispose();Application.Exit();}}

}

C# 批量加水印(含文字水印以及图片水印)相关推荐

  1. ios 图片居中裁剪_[ iOS Shortcuts / Workflow ] 分享一个给照片批量加「底部居中偏上」水印的捷径,可适应不同水印的尺寸...

    首先放链接 效果示意图 捷径特点 本捷径的水印位置位于图片底部局中偏上的位置 可自适应不同水印的尺寸 可多选照片批量操作 在加水印操作完成后会弹出预览,完成后点击保存或放弃 选择保存后还可选择是否删除 ...

  2. java操作图片集合(添加图片水印、文字水印,文字生成图片,图片转pdf等)

    花不多说 ,上代码 简单文字水印 // path 为原图片地址, outPath则是输出新图片地址public static void addWatermark(String path, String ...

  3. 计算机画图水印怎么可以消除,如何去掉图片水印 画图工具简单去掉图片水印教程-电脑教程...

    相信大家都会有这样的经历,在网上下载的很多图片上都会有水印,但如果我们为了美观,要去掉图片水印该如何实现呢?对于很多朋友来说,这可能是一个比较复杂的问题,因为自己不会PS.其实华强电子网小编告诉大家, ...

  4. 【python 水印生成器】python制作图片水印

    制作一个水印生成器,方便训练水印图片数据采集. 图片水印生成器,可以给指定图片文件或者目录添加水印,水印支持自定义文本.位置.颜色.大小. # -*- encoding=utf-8 -*- impor ...

  5. matlab去除图片水印_Python利用OpenCV去除图片水印

    点击上方"何俊林",马上关注,每天早上8:50准时推送 真爱,请置顶或星标 这两天公司来了一个新的需求--去除水印,对于我一个从未接触过的这种事情的人来说,当时我是蒙的.不过首先我 ...

  6. python 去除水印_python 利用opencv去除图片水印

    $(function () { changeIndReadCommentStyle(); //返回顶部 $('#back-to-top').click(function (e) { $('html,b ...

  7. java ftl 模板 输出list_java freemarker .ftl模板导出word文档(含文字,List, 图片)

    此处只介绍word模板部分,java代码等请自行百度,都一样. 辅助工具:notepad++,百度在线xml格式化 A.不含遍历的简单处理 不含遍历的简单处理 简单的一个key一个值使用比较简单,主要 ...

  8. acrobat给pdf加多行水印_批量pdf如何添加水印 多个pdf批量加相同水印的方法|支持同时添加文字、图片水印...

    本次还是给大家讲讲pdf文件的编辑转换处理,毕竟pdf文件也是在办公学习上是很常用到的,工作时很经常会遇到多个pdf文件要处理的情况,比如说制作好了一系列的pdf文档,需要上传到网络或者传输给他人查阅 ...

  9. 批量给多个 PPT 幻灯片文件加上统一的文字水印或图片水印

    概要:我们自己的 PPT 幻灯片文件和公司或者部门的 PPT 幻灯片文件都需要进行保护,最常见的保护的方式就是我们允许别人分享,但是我们要让别人知道这个 PPT 文件是来自于哪里,因此给 PPT 幻灯 ...

  10. 使用itext加图片水印或文字水印

    概述:使用itext 技术给pdf加水印方法. 实现原理:在不管是流还是临时pdf 预览之前.需先  生成不带水印的pdf,然后在通过itext工具方法生成带水印的pdf 依赖jar包:i-text- ...

最新文章

  1. php图标按钮,CSS如何创建图像图标按钮(附代码)
  2. VS .NET(C#)四舍五入方法(转)
  3. 使用 NCS2 异步推理——人脸识别
  4. JDK源码学习之Arraylist与LinkedList
  5. Fail-fast 和 Fail-safe 机制
  6. WPF 4 动态覆盖图标(Dynamic Overlay Icon)
  7. Linux平台上的音视频互动开发平台
  8. [Matlab科学计算] 绘制B样条基函数
  9. NCL中绘制中国任意省份的精确地图
  10. 网易 html5,今天网易刷屏的这个H5,到底有多猛?
  11. excel 置信区间 计算_Excel 计算置信区间:CONFIDENCE函数详解
  12. LTE网络中的无线安全的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  13. 戴尔服务器R200安装 centos7(U盘安装)
  14. django-视图集ViewSet
  15. 计算机无法使用打印机预览,电脑中excel打印预览无法查看的处理方法
  16. 开源项目之饭否 for Android
  17. Linux 指令:怎样从文件中找到重复行?
  18. 我的助理辞职了——给不听话的下属看看
  19. L1-8 牛的对称 (20 分)
  20. 大白菜PE怎么备份还原系统?

热门文章

  1. OLT光线路终端,ONU光网络单元
  2. Invalid argument: Key: XXX. Can‘t parse serialized Example.
  3. 【简单】面试题 03.06. 动物收容所
  4. 如何使用potplayer查看录制视频的帧率
  5. 2021-2027全球与中国娱乐性电子游戏市场现状及未来发展趋势
  6. 采用QT进行OpenGL开发(二)绘制立方体
  7. 从键盘输入一批字符,按要求加密并输出
  8. Unity声音-音源组件AudioSource
  9. java写的微信红包算法--田小江
  10. 位移运算 java_java位运算位移运算