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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值