2009-08-03 20 views
17

他の画像に透かし画像を追加するにはどうすればよいですか?他の画像に透かし画像を配置する(C#、ASP.Net)

イメージにウォーターマークとしてテキストを配置できますが、テキストの代わりにイメージを置いています。どのようにC#でこれを行うのですか?

具体的にもう一度、画像Xがあり、透かし記号として使用したいと思います。自分のウェブサイトに表示されたときに、このシンボルがすべての画像に表示されるようにします。あなたも行うことができます、あなたがgr.DrawStringを呼び出す同じ場所に

public static void AddWaterMark(MemoryStream ms, string watermarkText, MemoryStream outputStream) 
     { 
      System.Drawing.Image img = System.Drawing.Image.FromStream(ms); 
      Graphics gr = Graphics.FromImage(img); 
      Font font = new Font("Tahoma", (float)40); 
      Color color = Color.FromArgb(50, 241, 235, 105); 
      double tangent = (double)img.Height/(double)img.Width; 
      double angle = Math.Atan(tangent) * (180/Math.PI); 
      double halfHypotenuse = Math.Sqrt((img.Height * img.Height) + (img.Width * img.Width))/2; 
      double sin, cos, opp1, adj1, opp2, adj2; 

      for (int i = 100; i > 0; i--) 
      { 
       font = new Font("Tahoma", i, FontStyle.Bold); 
       SizeF sizef = gr.MeasureString(watermarkText, font, int.MaxValue); 

       sin = Math.Sin(angle * (Math.PI/180)); 
       cos = Math.Cos(angle * (Math.PI/180)); 
       opp1 = sin * sizef.Width; 
       adj1 = cos * sizef.Height; 
       opp2 = sin * sizef.Height; 
       adj2 = cos * sizef.Width; 

       if (opp1 + adj1 < img.Height && opp2 + adj2 < img.Width) 
        break; 
       // 
      } 

      StringFormat stringFormat = new StringFormat(); 
      stringFormat.Alignment = StringAlignment.Center; 
      stringFormat.LineAlignment = StringAlignment.Center; 

      gr.SmoothingMode = SmoothingMode.AntiAlias; 
      gr.RotateTransform((float)angle); 
      gr.DrawString(watermarkText, font, new SolidBrush(color), new Point((int)halfHypotenuse, 0), stringFormat); 

      img.Save(outputStream, ImageFormat.Jpeg); 
     } 
+0

を使用する別のソリューションであり、それはGIF形式の写真に問題があります。 –

+0

ya、私はGIFで心配しなかった。私の写真はすべてJPGで、ウォーターマークはPNGなので、私はそれらを無視しました。 – Miles

答えて

11

:だから私は、画像Xが画像YとZの

を透かしを入れています。ここのコードは、私は現在、それが透かしを作成していますgr.DrawImage(位置、サイズ、オーバーレイイメージ)。最高の画質を得るために、画像とオーバーレイがPNGファイルからロードされている場合(透明度付き)に役立ちます。ここで

+1

ああ、今私は馬鹿のように感じる...ハハハ、ありがとう – Miles

関連する問題