C#中添加图片水印

/// <summary>
  /// 添加图片水印
  /// </summary>
  /// <param name="path">原图片绝对地址</param>
  /// <param name="Ext">文件后缀</param>
  public static string addWaterMark(string path,string fileExt)
  {
    System.Drawing.Image image = System.Drawing.Image.FromFile(path);
   Bitmap b = new Bitmap(image.Width, image.Height,System.Drawing.Imaging.PixelFormat.Format24bppRgb);
   Graphics g = Graphics.FromImage(b);
   g.Clear(Color.White);
   g.DrawImage(image, 0, 0, image.Width, image.Height);

   Image watermark = new Bitmap(ConfigurationSettings.AppSettings["PersonalPath"] + @"images/logo.jpg");

   System.Drawing.Imaging.ImageAttributes imageAttributes = new System.Drawing.Imaging.ImageAttributes();
   System.Drawing.Imaging.ColorMap colorMap = new System.Drawing.Imaging.ColorMap();
   colorMap.OldColor = Color.FromArgb(255, 0, 255, 0);
   colorMap.NewColor = Color.FromArgb(0, 0, 0, 0);
   System.Drawing.Imaging.ColorMap[] remapTable = {colorMap};
   imageAttributes.SetRemapTable(remapTable, System.Drawing.Imaging.ColorAdjustType.Bitmap);
   float[][] colorMatrixElements = {
            new float[] {1.0f,  0.0f,  0.0f,  0.0f, 0.0f},
            new float[] {0.0f,  1.0f,  0.0f,  0.0f, 0.0f},
            new float[] {0.0f,  0.0f,  1.0f,  0.0f, 0.0f},
            new float[] {0.0f,  0.0f,  0.0f,  0.3f, 0.0f},
            new float[] {0.0f,  0.0f,  0.0f,  0.0f, 1.0f}
           };
   System.Drawing.Imaging.ColorMatrix colorMatrix = new System.Drawing.Imaging.ColorMatrix(colorMatrixElements);
   imageAttributes.SetColorMatrix(colorMatrix, System.Drawing.Imaging.ColorMatrixFlag.Default, System.Drawing.Imaging.ColorAdjustType.Bitmap);
   int xpos = 0;
   int ypos = 0;
   
   xpos = ((image.Width - watermark.Width) - 10);
   ypos = image.Height - watermark.Height - 10;

   g.DrawImage(watermark, new Rectangle(xpos, ypos, watermark.Width, watermark.Height), 0, 0, watermark.Width, watermark.Height, GraphicsUnit.Pixel, imageAttributes);

   watermark.Dispose();
   imageAttributes.Dispose();


   //保存加水印过后的图片,删除原始图片
   Random ro=new Random((int)DateTime.Now.Ticks);
   string temppath = System.DateTime.Now.ToString("yyyy") + "//" + System.DateTime.Now.ToString("MMdd");
   string fileName = temppath + "//" + DateTime.Now.ToString("yyyyMMddHHmmss") + ro.Next(10000) + fileExt;
   string filepath = Functions.GetUserFactPath(User.GetUserFromSession().Adddate,User.GetUserFromSession().UserId) + "3//";
   

   b.Save(filepath + fileName);
   b.Dispose();
   image.Dispose();
   if(File.Exists(path))
   {
    File.Delete(path);
   }

   return fileName;
  }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
引用[1]: 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; 问题: C#批量添加图片水印 回答: 在C#,可以使用System.Drawing命名空间的类来实现批量添加图片水印的功能。首先,你需要引用System.Drawing命名空间,并使用System.IO命名空间来处理文件操作。然后,你可以使用Bitmap类来图片,使用Graphics类来绘制水印,并使用Image类来保存修改后的图片。以下是一个简单的示例代码: ```csharp using System; using System.Drawing; using System.IO; namespace WatermarkExample { class Program { static void Main(string[] args) { string watermarkText = "Watermark"; // 水印文本 string imagePath = "image.jpg"; // 图片路径 string outputDirectory = "output"; // 输出目录 // 创建输出目录 Directory.CreateDirectory(outputDirectory); // 图片 using (Bitmap image = new Bitmap(imagePath)) { // 创建Graphics对象 using (Graphics graphics = Graphics.FromImage(image)) { // 设置水印字体和颜色 Font font = new Font("Arial", 12); Brush brush = new SolidBrush(Color.Red); // 计算水印位置 SizeF textSize = graphics.MeasureString(watermarkText, font); PointF position = new PointF(image.Width - textSize.Width - 10, image.Height - textSize.Height - 10); // 绘制水印 graphics.DrawString(watermarkText, font, brush, position); } // 保存修改后的图片 string outputImagePath = Path.Combine(outputDirectory, "watermarked_image.jpg"); image.Save(outputImagePath); } Console.WriteLine("水印添加完成!"); } } } ``` 在上述示例代码,你可以修改`watermarkText`变量来设置水印文本,`imagePath`变量来设置要添加水印图片路径,`outputDirectory`变量来设置输出目录。运行代码后,修改后的图片将保存在输出目录。请确保你已经正确引用了System.Drawing和System.IO命名空间,并且已经将图片文件放置在正确的路径下。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值