`
lexinquan
  • 浏览: 47221 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Dotnet水印之2:图片加水印图片

 
阅读更多
直接贴

/// <summary>
		/// 图片加水印
		/// </summary>
		/// <param name="fileName">源图片文件</param>
		/// <param name="text">水印文字</param>
		/// <param name="newfile">新图片文件名</param>
		public static string PicWaterMark(string SrcFileName,string text,string NewFile) 
		{      	
			return PicWaterMark(SrcFileName,text,NewFile,20.0f, "宋体", 100f, 100f ) ;
		}	
	
		 
		/// <summary>
		/// 图片加水印
		/// </summary>
		/// <param name="SrcFileName">源图片文件</param>
		/// <param name="text">水印文字</param>
		/// <param name="NewFile">新图片文件名</param>
		/// <param name="fontSize">字体大小</param>
		/// <param name="fontName">字体名称</param>
		/// <param name="top">离顶部距离</param>
		/// <param name="left">离左边距离</param>
		/// <returns>返回失败的错误信息1.返回空错误信息表示成功,2.返回非空,即为相应错误信息</returns>
		public static string PicWaterMark(string SrcFileName,string text,string NewFile,float fontSize,string fontName,float top,float left) 
		{ 
			return PicWaterMark( SrcFileName, text, NewFile, fontSize, fontName, top, left,false);
		}
		/// <summary>
		/// 图片加水印
		/// </summary>
		/// <param name="SrcFileName">源图片文件</param>
		/// <param name="text">水印文字</param>
		/// <param name="NewFile">新图片文件名</param>
		/// <param name="fontSize">字体大小</param>
		/// <param name="fontName">字体名称</param>
		/// <param name="top">离顶部距离</param>
		/// <param name="left">离左边距离</param>
		/// <param name="saveNew">新的图片保存方式,如果用此方式,则图片经过编码处理,显示更加清晰,但是size很大;true为新的方式,false为不经过处理方式,图片比较小</param>
		/// <returns>返回失败的错误信息1.返回空错误信息表示成功,2.返回非空,即为相应错误信息</returns>
		public static string PicWaterMark(string SrcFileName,string text,string NewFile,float fontSize,string fontName,float top,float left,bool saveNew) 
		{ 
			if(!File.Exists(SrcFileName)) 
 			{ 
  			throw new FileNotFoundException("The file don't exist!"); 
 			} 
			System.Drawing.Image imgSrc=null;
			Bitmap bmpSrc =null;
			Graphics g=null;
			try
			{
				//读取源图片文件创建了一个Image 对象
				imgSrc =   System.Drawing.Image.FromFile(SrcFileName);
				int imgSrcWidth =imgSrc.Width;
				int imgSrcHeight=imgSrc.Height;

				//建立一个Format24bppRgb格式 颜色数据的Bitmap对象
				bmpSrc = new Bitmap(imgSrcWidth,imgSrcHeight,
					PixelFormat.Format24bppRgb);

				//从源文件创建的image中创建一个graphics对象
				g =  Graphics.FromImage(bmpSrc);   
				//设置g的呈现质量
				g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; 
				//按原始大小绘制imgSrc 到Graphics 对象的(x=0,y=0)位置。 
				g.DrawImage(imgSrc,
					new System.Drawing.Rectangle(0,0,imgSrcWidth,imgSrcHeight),
					0,0,imgSrcWidth,imgSrcHeight,
					GraphicsUnit.Pixel);
				//定义字体
				System.Drawing.Font textFont = new System.Drawing.Font(fontName,fontSize); 

				System.Drawing.Color textColor=System.Drawing.Color.Red;
				//定义画刷
				SolidBrush textBrush = new SolidBrush(textColor);

				StringFormat StrFormat = new StringFormat();   
				StrFormat.Alignment = StringAlignment.Center;   
				float textWidth = text.Length*fontSize; //文本的长度 
				//下面定义一个矩形区域,以后在这个矩形里画上白底黑字 
				float rectX = top; 
				float rectY = left; 
				float rectWidth = text.Length*(fontSize+8); 
				float rectHeight = fontSize+8; 
				//声明矩形域 
				RectangleF textArea = new RectangleF(rectX,rectY,rectWidth,rectHeight);
			
				Brush emptyBrush = new SolidBrush(System.Drawing.Color.Empty); //白笔刷,画背景用 
			
				g.FillRectangle(emptyBrush,rectX,rectY,rectWidth,rectHeight); 
				g.DrawString(text,textFont,textBrush,textArea, StrFormat);  
				//销毁两个Graphic对象,然后把Image 保存到文件系统。,ImageFormat.Jpeg   
				if (saveNew==true)
					SaveImg(bmpSrc,NewFile);
				else
					bmpSrc.Save(NewFile);
				//bmpSrc.Save(NewFile,ImageFormat.Jpeg );   
				ErrorString="";
			}
			catch(Exception ex)
			{
				ErrorString=ex.Message.Trim();
			}
			finally
			{
				if (bmpSrc!=null)
					bmpSrc.Dispose(); 
				if (imgSrc!=null)
					imgSrc.Dispose(); 
				if (g!=null)
					g.Dispose();   
			}
			return ErrorString;
		}


#region "----------image"
		public static void SaveImg(Bitmap bitmap,string NewFileName)
		{
			long   level=60;
			ImageCodecInfo   myImageCodecInfo; 
			System.Drawing.Imaging.Encoder   myEncoder; 
			EncoderParameter   myEncoderParameter; 
			EncoderParameters   myEncoderParameters; 
                                       
			myImageCodecInfo   =System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()[0];//GetEncoderInfo( "image/jpeg "); 
              
			//   Create   an   Encoder   object   based   on   the   GUID 
                                          
			//   for   the   Quality   parameter   category. 
			myEncoder   =   System.Drawing.Imaging.Encoder.Quality; 
                                          
			//   Create   an   EncoderParameters   object. 
			//   An   EncoderParameters   object   has   an   array   of   EncoderParameter 
			//   objects.   In   this   case,   there   is   only   one 
                                          
			//   EncoderParameter   object   in   the   array. 
			myEncoderParameters   =   new   EncoderParameters(1); 
                                          
			//   Save   the   bitmap   as   a   JPEG   file   with   给定的   quality   level 
			myEncoderParameter   =   new   EncoderParameter(myEncoder,   level); 
			myEncoderParameters.Param[0]   =   myEncoderParameter; 
			bitmap.Save(NewFileName,   myImageCodecInfo,   myEncoderParameters); 
		}
分享到:
评论

相关推荐

    dotNET Reactor 使用步骤图解

    * 水印:在文件中嵌入水印,以便追踪文件的使用和分发。 在设置保护时,需要根据文件的类型和版本选择合适的保护选项。 管理许可证 dotNET Reactor 还提供了许可证管理功能,可以帮助开发者管理和跟踪文件的使用和...

    DotNet帮助类集合

    这可能是用于处理图像验证的一系列方法,例如图像的裁剪、旋转、缩放、加水印、图像对比度和亮度调整等,常用于用户上传图片的预处理。 7. 随机数类: 提供生成随机数的功能,可以生成指定范围内的整数或浮点数,...

    C#实现图片切割的方法

    2. 获取图片的尺寸:使用Bitmap类获取图片的宽度和高度。 3. 计算切割数量:根据图片的尺寸和用户的要求,计算需要切割的数量。 4. 实现图片切割:使用Graphics类和Bitmap类实现图片的切割。 5. 保存图片:使用...

    商用版本文本编辑器DotNetTextBoxV6.0.8Source 源码

    2)优化了图片水印功能,图片水印可以4:1为比例自适应图片。 3)增加水印调整功能的左上,左下,右上,右下角的位置(默认右下)。 4)增加图片水印是否半透明的选项。 2009/11/25 Version 6.1.2 For VS2005/2008 ...

    C# exe dll防止反编译-- dotNET_Reactor.doc

    2. 在 reactor 工程中,初始化代码并删除 reactor.exe 文件。 3. 使用 dotNET_Reactor 工具来设置和保存 setting.nrproj 文件。 4. 在 reactor 工程中实现以下功能: * cd D:\software\C#反编译\.NET Reactor * ...

    DotNet公用类(超多附文档)

    10.图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类(ImageHelper.cs) 11.输入法帮助,全角 转换为半角(ImeHelper.cs) 12.Winform提示框 的摘要说明。(MessageUtil.cs) 13.包含互操作方法调用的...

    WebSupergoo.ABCpdf.DotNET.v7.0.0.8.key

    ### WebSupergoo.ABCpdf.DotNET.v7.0.0.8.key:解析与深入理解 #### 一、ABCpdf:动态PDF文档生成利器 ABCpdf是一款功能强大的.NET组件,专为动态生成PDF文档而设计。这款工具以其卓越的性能、广泛的兼容性和丰富...

    第三代移动WEB内核小程序风口-逐浪CMS2 x3.9.3全面发布

    ■扩展:Logo设计,下载图片时会自动添加水印 ■修复:因为特殊字符,导致word无法生成Bug ■按需扩展龙悦云收银模块 ■修复:中文无法输入Bug ■扩展:按需优化POS收银代码,增强稳定性,并可记录异常 ■扩展:支持打印...

    dotnet-ITextSharpiText的一个NET版本

    7. **水印与注释**:可以向PDF文档添加水印、页眉、页脚以及各种注释和批注。 8. **加密与解密**:可以对PDF文档进行加密,保护内容不被未经授权的访问,同时也能解密已加密的文档。 9. **图像处理**:支持多种...

    ASP.NET基础控件-教程

     图片水印  防盗链  .NET(C#)连接各类数据库  读取配置文件数据库连接串  正则表达式验证  递归把十进制转换八进制(面试题目)  Mysql测试连接(DLL的引用)(插入与读取)  Asp.Net编辑器Fckeditor的使用  Asp...

    ASP.Net.技巧收集.pdf

    - **定义**: 给图片添加水印以防止盗用。 - **实现方法**: 使用图像处理库(如GDI+)。 #### 29. 防盗链 - **定义**: 防止其他网站直接链接自己的资源。 - **实现方法**: 服务器端检查HTTP头中的Referer字段。 ###...

    asp.net帮助工具类公用类

    15. **图像处理**:如图片缩放、裁剪、水印添加等。 在.NET项目中,使用这些工具类可以极大地提高开发效率,减少重复代码,并且使得代码更加整洁。这个名为"DotNet.Utilities"的压缩包很可能就是一个这样的工具集,...

    conflent kafka net 依赖库.zip

    confluent-kafka-dotnet是Confluent公司提供的一个.NET客户端库,用于与Apache Kafka进行交互。这个库使得在.NET环境中开发Kafka应用变得更加方便。Kafka是一个分布式流处理平台,常用于构建实时数据管道和流应用...

    C#开发工具类整理

    图片处理可能涵盖缩放、裁剪、水印等操作;加密解密方法用于保护敏感信息;验证码生成则用于防止自动化攻击。 对于初学者,这个资源提供了一个很好的实践平台,通过学习和使用这些工具类,可以加深对C#语言特性和...

    .net技术资料大全(语言规范 源码教程 学习笔记 技术资料 .net代码生成器)

    加半透明图片水印.txt 将控件放到datagrid中以及修改列宽.txt 截取系统消息.txt 解决VS.NET使用中属性框不显示的问题.txt 里的InputBox.txt 模拟鼠标和键盘操作.txt 取CPU的序列号.txt 如何:在VisualC#.NET...

    ASP升级.net资料大全(c#入门 语言规范 源码教程 学习笔记 技术资料 面试题 asp与.net代码生成器)

    加半透明图片水印.txt 将控件放到datagrid中以及修改列宽.txt 截取系统消息.txt 解决VS.NET使用中属性框不显示的问题.txt 里的InputBox.txt 模拟鼠标和键盘操作.txt 取CPU的序列号.txt 如何:在VisualC#.NET...

Global site tag (gtag.js) - Google Analytics