直接贴
/// <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 还提供了许可证管理功能,可以帮助开发者管理和跟踪文件的使用和...
这可能是用于处理图像验证的一系列方法,例如图像的裁剪、旋转、缩放、加水印、图像对比度和亮度调整等,常用于用户上传图片的预处理。 7. 随机数类: 提供生成随机数的功能,可以生成指定范围内的整数或浮点数,...
2. 获取图片的尺寸:使用Bitmap类获取图片的宽度和高度。 3. 计算切割数量:根据图片的尺寸和用户的要求,计算需要切割的数量。 4. 实现图片切割:使用Graphics类和Bitmap类实现图片的切割。 5. 保存图片:使用...
2)优化了图片水印功能,图片水印可以4:1为比例自适应图片。 3)增加水印调整功能的左上,左下,右上,右下角的位置(默认右下)。 4)增加图片水印是否半透明的选项。 2009/11/25 Version 6.1.2 For VS2005/2008 ...
2. 在 reactor 工程中,初始化代码并删除 reactor.exe 文件。 3. 使用 dotNET_Reactor 工具来设置和保存 setting.nrproj 文件。 4. 在 reactor 工程中实现以下功能: * cd D:\software\C#反编译\.NET Reactor * ...
10.图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类(ImageHelper.cs) 11.输入法帮助,全角 转换为半角(ImeHelper.cs) 12.Winform提示框 的摘要说明。(MessageUtil.cs) 13.包含互操作方法调用的...
### WebSupergoo.ABCpdf.DotNET.v7.0.0.8.key:解析与深入理解 #### 一、ABCpdf:动态PDF文档生成利器 ABCpdf是一款功能强大的.NET组件,专为动态生成PDF文档而设计。这款工具以其卓越的性能、广泛的兼容性和丰富...
■扩展:Logo设计,下载图片时会自动添加水印 ■修复:因为特殊字符,导致word无法生成Bug ■按需扩展龙悦云收银模块 ■修复:中文无法输入Bug ■扩展:按需优化POS收银代码,增强稳定性,并可记录异常 ■扩展:支持打印...
7. **水印与注释**:可以向PDF文档添加水印、页眉、页脚以及各种注释和批注。 8. **加密与解密**:可以对PDF文档进行加密,保护内容不被未经授权的访问,同时也能解密已加密的文档。 9. **图像处理**:支持多种...
图片水印 防盗链 .NET(C#)连接各类数据库 读取配置文件数据库连接串 正则表达式验证 递归把十进制转换八进制(面试题目) Mysql测试连接(DLL的引用)(插入与读取) Asp.Net编辑器Fckeditor的使用 Asp...
- **定义**: 给图片添加水印以防止盗用。 - **实现方法**: 使用图像处理库(如GDI+)。 #### 29. 防盗链 - **定义**: 防止其他网站直接链接自己的资源。 - **实现方法**: 服务器端检查HTTP头中的Referer字段。 ###...
15. **图像处理**:如图片缩放、裁剪、水印添加等。 在.NET项目中,使用这些工具类可以极大地提高开发效率,减少重复代码,并且使得代码更加整洁。这个名为"DotNet.Utilities"的压缩包很可能就是一个这样的工具集,...
confluent-kafka-dotnet是Confluent公司提供的一个.NET客户端库,用于与Apache Kafka进行交互。这个库使得在.NET环境中开发Kafka应用变得更加方便。Kafka是一个分布式流处理平台,常用于构建实时数据管道和流应用...
图片处理可能涵盖缩放、裁剪、水印等操作;加密解密方法用于保护敏感信息;验证码生成则用于防止自动化攻击。 对于初学者,这个资源提供了一个很好的实践平台,通过学习和使用这些工具类,可以加深对C#语言特性和...
加半透明图片水印.txt 将控件放到datagrid中以及修改列宽.txt 截取系统消息.txt 解决VS.NET使用中属性框不显示的问题.txt 里的InputBox.txt 模拟鼠标和键盘操作.txt 取CPU的序列号.txt 如何:在VisualC#.NET...
加半透明图片水印.txt 将控件放到datagrid中以及修改列宽.txt 截取系统消息.txt 解决VS.NET使用中属性框不显示的问题.txt 里的InputBox.txt 模拟鼠标和键盘操作.txt 取CPU的序列号.txt 如何:在VisualC#.NET...