用flash制作水印的一个方法

来源:互联网 发布:超级高铁 知乎 编辑:程序博客网 时间:2024/05/16 16:22

//方法作用:生成水印图片
  //sourcefile:要生成水印的图片文件
  //WaterMarkfile:存放水印的图片文件
  //savefile:存放水印的图片文件
  public static bool MakeWaterImage(string sourceFile,string waterMarkFile,string saveFile)
  {
   bool result;
   try
   {
    //原图
    Bitmap sImage = new Bitmap(sourceFile);
    int sWidth  = sImage.Width;
    int sHeight  = sImage.Height;
   
    //水印图
    Bitmap wImage = new Bitmap(waterMarkFile);
    int wWidth  = wImage.Width;
    int wHeight  = wImage.Height;
    //make Graphics.
    Graphics g = Graphics.FromImage(sImage);
    int x; //临时变量
    int y; //监时变量
    int x1; //原图和水印图的宽度差
    int y1; //原图和水印图的高度差
    int w; //生成的水印图的宽度
    int h; //生成的水印图的高度
    int al; //alpha
    int rl; //Red
    int gl; //Green
    int bl; //Blue

    if(sWidth > wWidth)
    {
     x1 = sWidth - wWidth;
     y1 = sHeight - wHeight;
     w = wWidth;
     h = wHeight;
    }
    else
    {
     x1 = 0;
     y1 = 0;
     w = sWidth;
     h = sHeight;
    }
    //开始绘图
    for(x = 1; x < w; x++)
    {
     for(y = 1; y < h; y++)
     {
      al = wImage.GetPixel(x,y).A;
      rl = wImage.GetPixel(x,y).R;
      gl = wImage.GetPixel(x,y).G;
      bl = wImage.GetPixel(x,y).B;
      al = 70;
     
      if(rl + 25 < 255)
       rl += 25;
      if(gl + 25 < 255)
       gl += 25;
      if(bl + 25 < 255)
       bl += 25;
      g.DrawEllipse(new Pen(new SolidBrush(Color.FromArgb(al,rl,gl,bl))),x1+x,y1+y,1,1);    
     }
    }  
    g.Save();
    sImage.Save(saveFile);
    result = true;
   }
   catch
   {
    result = false;
   }
   return result;
  }


原创粉丝点击