/// <summary> /// 给图片添加文字水印 /// </summary> /// <param name="srcFile">源图片存放路径</param> /// <param name="destFile">目标图片存放路径</param> /// <param name="fontSize">字号,可超过72号的</param> /// <param name="throwException">出现异常时是否抛出</param> /// <param name="text">要添加的文字</param> public static bool AddWatermarkText(string srcFile, string destFile, int fontSize, string text) { if (string.IsNullOrWhiteSpace(srcFile) || string.IsNullOrWhiteSpace(destFile)) { throw new Exception("源图或目标图片的存放路径都不能为空"); } System.Drawing.Image img = null; Graphics picture = null; Font crFont = null; StringFormat StrFormat = new StringFormat(); SolidBrush semiTransBrush2 = new SolidBrush(Color.FromArgb(153, 0, 0, 0)); SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(153, 255, 255, 255)); try { img = System.Drawing.Image.FromFile(srcFile); picture = Graphics.FromImage(img); SizeF crSize = new SizeF(); crFont = new Font("arial", fontSize, FontStyle.Bold); crSize = picture.MeasureString(text, crFont); float xpos = 0; float ypos = 0; xpos = (img.Width - crSize.Width) / 2; ypos = (img.Height - crSize.Height) / 2; StrFormat.Alignment = StringAlignment.Near; picture.DrawString(text, crFont, semiTransBrush2, xpos + 1, ypos + 1, StrFormat); picture.DrawString(text, crFont, semiTransBrush, xpos, ypos, StrFormat); string destPath = Path.GetDirectoryName(destFile); if (!string.IsNullOrWhiteSpace(destPath)) { if (!Directory.Exists(destPath)) { Directory.CreateDirectory(destPath); } } img.Save(destFile); return(true); } catch (Exception ex) { throw new Exception("给图片添加水印时发生异常:" + ex); } finally { crFont.DisposeIfNotNull(); StrFormat.DisposeIfNotNull(); semiTransBrush2.DisposeIfNotNull(); semiTransBrush.DisposeIfNotNull(); picture.DisposeIfNotNull(); img.DisposeIfNotNull(); } }