English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C#で認証コード画像のノイズ効果を除去する方法

導言 

      生成画像に基づいて、電話番号を画像に変換する要求を実現しました。内容もシンプルで、電話番号から直接png画像を生成します。背景を透明にすることで、他の場所からの呼び出しを容易にします。有無の鋸齧は以下の一行のコードで決まります:g.TextRenderingHint= TextRenderingHint.AntiAlias; 

生成画像  

1、有鋸齧 


2、無鋸齧

生成方法

string color = "#ff6633";" 
    System.Drawing.Bitmap image = new System.Drawing.Bitmap(170, 35);
    Graphics g = Graphics.FromImage(image);
    try
    {
      g.TextRenderingHint= TextRenderingHint.AntiAlias; //エッジの鋸歯を除去
      //ランダム生成器を生成
      Random random = new Random();
     //画像の背景色をクリア
      //g.Clear(Color.Transparent);
      //画像の背景のノイズラインを描画
      /*for (int i = 0; i < 2; i++)
      {
        int x1 = random.Next(image.Width);
        int x2 = random.Next(image.Width);
        int y1 = random.Next(image.Height);
        int y2 = random.Next(image.Height);
        g.DrawLine(new Pen(Color.Black), x1, y1, x2, y2);
      }
      */
      System.Drawing.ColorConverter colConvert = new System.Drawing.ColorConverter();
      Color fontColor =(System.Drawing.Color)colConvert.ConvertFromString(color);
      Font font = new System.Drawing.Font("Arial", 18, System.Drawing.FontStyle.Bold);
      LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), fontColor, fontColor,LinearGradientMode.Horizontal);
      g.DrawString(phone, font, brush, 2, 2);
      //画像の前景のノイズポイントを描画
       //for (int i = 0; i < 50; i++)
      //{
      //  int x = random.Next(image.Width);
      //  int y = random.Next(image.Height);
      //  image.SetPixel(x, y, Color.FromArgb(random.Next()));
      //}
      //画像の枠線を描画
      //g.DrawRectangle(new Pen(Color.White), 0, 0, image.Width) - 1, image.Height - 1);
      System.IO.MemoryStream ms = new System.IO.MemoryStream();
      Color backColor = image.GetPixel(1, 1);
      image.MakeTransparent(backColor);
      image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
      context.Response.ClearContent();
      context.Response.ContentType = "image/x-png";
      context.Response.BinaryWrite(ms.ToArray());
    }
    finally
    {
      g.Dispose();
      image.Dispose();
    }

参考文献 

http://www.blue1000.com/bkhtml/c17/2013-03/71115.htm

これで本文のすべてが終わりました。皆様の学習に役立つことを願っています。また、呐喊ガイドを多くの皆様に支持していただけると嬉しいです。

声明:本文の内容はインターネットから収集され、著作権者に帰属します。インターネットユーザーにより自発的に貢献し、自己でアップロードされました。本サイトは所有権を持ちません。人工的な編集は行われていません。また、関連する法的責任を負いません。著作権侵害を疑われる内容があれば、メールでnotice#wまでお知らせください。3codebox.com(メール送信時は、#を@に変更してください。報告を行い、関連する証拠を提供してください。一旦確認が取れましたら、本サイトは即座に侵害を疑われるコンテンツを削除します。)

おすすめ