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);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
----------Database-------------- 1.DataTable帮助类(DataTableHelper.cs) 2.Access数据库文件操作辅助类(JetAccessUtil.cs) 3.常用的Access数据库Sql操作辅助类库(OleDbHelper.cs) 4.根据各种不同数据库生成不同【分页语句的辅助类】 PagerHelper(PageHelper.cs) 5.查询条件组合辅助类(SearchCondition.cs) 6.查询信息实体类(SearchInfo.cs) 7.类型(例如:int,string,double)转换(SmartDataReader.cs) 8.Sql命令操作函数(可用于安装程序的时候数据库脚本执行)(SqlScriptHelper.cs) ----------Device-------------- 1.声音播放辅助类(AudioHelper.cs) 2.摄像头操作辅助类,包括开启、关闭、抓图、设置等功能(Camera.cs) 3.提供用于操作【剪切板】的方法(ClipboardHelper.cs) 4.获取电脑信息(Computer.cs) 5.提供用户硬件唯一信息的辅助类(FingerprintHelper.cs) 6.读取指定盘符的硬盘序列号(HardwareInfoHelper.cs) 7.提供访问键盘当前状态的属性(KeyboardHelper.cs) 8.全局键盘钩子。这可以用来在全球范围内捕捉键盘输入。(KeyboardHook.cs) 9.模拟鼠标点击(MouseHelper.cs) 10.全局鼠标钩子。这可以用来在全球范围内捕获鼠标输入。(MouseHook.cs) 11.MP3文件播放操作辅助类(MP3Helper.cs) ----------Encrypt-------------- 1.基于Base64的密编码(Base64Util.cs) 2.字符串的密/解密(EncodeHelper.cs) 3.MD5各种长度密字符、验证MD5等操作辅助类(MD5Util.cs) 4.QQ的EncryptUtil(QQEncryptUtil.cs) 5.非对称密验证辅助类(RSASecurityHelper.cs) ----------File-------------- 1.用于获取或设置Web.config/*.exe.config中节点数据的辅助类(AppConfig.cs) 2.CSV文件和DataTable对象转换辅助类(CSVHelper.cs) 3.DatabaseInfo 的摘要说明。(DatabaseInfo.cs) 4.常用的目录操作辅助类(DirectoryUtil.cs) 5.Excel操作辅助类(无需VBA引用)(ExcelHelper.cs) 6.利用VBA对象,导出DataView到一个Excel文档中的Excel辅助类(Export2Excel.cs) 7.关联文件(ExtensionAttachUtil.cs) 8.注册文件关联的辅助类(FileAssociationsHelper.cs) 9.打开、保存文件对话框操作辅助类(FileDialogHelper.cs) 10.常用的文件操作辅助类FileUtil(FileUtil.cs) 11.INI文件操作辅助类(INIFileUtil.cs) 12.独立存储操作辅助类(IsolatedStorageHelper.cs) 13.序列号操作辅助类(Serializer.cs) 14.获取一个对象,它提供用于访问经常引用的目录的属性。(SpecialDirectories.cs) 15.简单的Word操作对象(WordCombineUtil.cs) 16.这个类提供了一些实用的方法来转换XML和对象。(XmlConvertor.cs) 17.XML操作类(XmlHelper.cs) ----------Format-------------- 1.参数验证的通用验证程序。(ArgumentValidation.cs) 2.这个类提供了实用方法的字节数组和图像之间的转换。(ByteImageConvertor.cs) 3.byte字节数组操作辅助类(BytesTools.cs) 4.处理数据类型转换,数制转换、编码转换相关的类(ConvertHelper.cs) 5.CRC校验辅助类(CRCUtils.cs) 6.枚举操作公共类(EnumHelper.cs) 7.身份证操作辅助类(IDCardHelper.cs) 8.检测字符编码的类(IdentifyEncoding.cs) 9.RGB颜色操作辅助类(MyColors.cs) 10.日期操作类(MyDateTime.cs) 11.转换人民币大小金额辅助类(RMBUtil.cs) 12.常用的字符串常量(StringConstants.cs) 13.简要说明TextHelper。(StringUtil.cs) 14.获取中文字首字拼写,随机发生器,按指定概率随机执行操作(Util.cs) 15.各种输入格式验证辅助类(ValidateUtil.cs) ----------Network-------------- 1.Cookie操作辅助类(CookieManger.cs) 2.FTP操作辅助类(FTPHelper.cs) 3.HTML操作类(HttpHelper.cs) 4.网页抓取帮助(HttpWebRequestHelper.cs) 5.Net(NetworkUtil.cs) 6.IE代理设置辅助类(ProxyHelper.cs) ----------Winform-------------- 1.跨线程的控件安全访问方式(CallCtrlWithThreadSafety.cs) 2.CheckBoxList(CheckBoxListUtil.cs) 3.窗口管理类(ChildWinManagement.cs) 4.由马丁·米勒http://msdn.microsoft.com/en-us/library/ms996492.aspx提供一个简单的方法打印工作的一个RichTextBox一个帮手(ExRichTextBoxPrintHelper.cs) 5.显示,隐藏或关闭动画形式。(FormAnimator.cs) 6.对窗体进行冻结、解冻操作辅助类(FreezeWindowUtil.cs) 7.窗体全屏操作辅助类(FullScreenHelper.cs) 8.GDI操作辅助类(GDI.cs) 9.提供静态方法来读取这两个文件夹和文件的系统图标。(IconReaderHelper.cs) 10.图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类(ImageHelper.cs) 11.输入法帮助,全角 转换为半角(ImeHelper.cs) 12.Winform提示框 的摘要说明。(MessageUtil.cs) 13.包含互操作方法调用的应用程序中使用。(NativeMethods.cs) 14.托盘图标辅助类(NotifyIconHelper.cs) 15.打印机类(POSPrinter.cs) 16.图片、光标、图标、位图等资源操作辅助类(ResourceHelper.cs) 17.RTF字符格式辅助类(RTFUtility.cs) 18.串口开发辅助类(SerialPortUtil.cs) 19.设置文本属性提供一个ToolStripStatusLabel(SafeToolStripLabel.cs) 20.只运行一个实例及系统自动启动辅助类(StartupHelper.cs) 21.Web页面预览效果图片抓取辅助类(WebPageCapture.cs) 22.供Asp.Net直接调用的包装类(WebPreview.cs) 23.计算机重启、关电源、注销、关闭显示器辅助类(WindowsExitHelper.cs) ----------NONONONO-------------- 1.全局统一的缓存类(Cache.cs) 2.常用显示日期时间、农历、生肖的日历类(CCalendar.cs,DateTimeHelper.cs) 3.中国农历年处理类(ChineseCalendar.cs) 4.正则表达式辅助类(CRegex.cs) 5.CString 的摘要说明。(CString.cs) 6.CText文本内容的类库(CText.cs) 7.初始化语言环境(CultureInfoUtil.cs) 8.压缩文本、字节或者文件的压缩辅助类(GZipUtil.cs) 9.Log4Net日志记录辅助类(LogHelper.cs) 10.中文字符串转换为拼音或者拼音首字母的辅助类(PinYinUtil.cs) 11.随机汉字辅助类(RandomChinese.cs) 12.反射操作辅助类,如获取或设置字段、属性的值等反射信息。(ReflectionUtil.cs) 13.注册表操作辅助类(RegistryHelper.cs) 14.用于验证码图片识别的类(UnCodebase.cs) 15.将原始字串转换为unicode,格式为\u.\u.( UnicodeHelper.cs)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值