天天看點

用.net實作按透明度生成水印檔案

         /// <summary>

  /// 生成水印,可按左上、左下、右上、右下、居中、透明度生成檔案,隻對jpeg或jpg格式有效!

  /// </summary>

  /// <param name="sourceFile">底圖</param>

  /// <param name="waterMarkFile">水印圖</param>

  /// <param name="saveFile">要儲存的檔案</param>

  /// <param name="local">位置:左上(1)、左下(2)、右上(3)、右下(4)、居中(5)</param>

  /// <param name="alpha">透明度(1-100)</param>

  /// <returns>bool,是否成功</returns>

  public static bool MakeWaterImage(string sourceFile,string waterMarkFile,string saveFile,int local,int alpha)

  {  

  bool result;

  

  if( !File.Exists(sourceFile) || !File.Exists(waterMarkFile)) //如果源圖或水印圖不存在

  return false;

  FileInfo fi = new FileInfo(sourceFile);

  //判斷檔案類型是否合法  

  if(fi.Extension.ToLower()!=".jpg" & fi.Extension.ToLower()!=".jpeg")

  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 = 0; //原圖和水印圖的寬度差,即開始繪圖的X位置

  int y1 = 0; //原圖和水印圖的高度差,即開始繪圖的Y位置

  int w = 0; //生成的水印圖的寬度,即結束繪圖的X位置

  int h = 0; //生成的水印圖的高度,即結束繪圖的Y位置

  int al; //alpha

  int rl; //Red

  int gl; //Green

  int bl; //Blue

  //校驗透明度

  if(alpha < 1 || alpha > 100)

  al = 80;

  else

  al = alpha;

  if(sWidth > wWidth & sHeight > wHeight) //如果源圖比水印圖大

  {    

  switch(local)

  case 1: //左上

  x1 = 0;

  y1 = 0;      

繼續閱讀