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

Como eliminar o efeito de dentes de serra na imagem do captcha em C#

Introdução 

      Baseado na geração de imagem, foi implementada uma necessidade de conversão de número de telefone para imagem. O conteúdo também é simples, diretamente gerar uma imagem png com o número de telefone. É apenas para que o fundo seja transparente para que outros lugares possam chamá-lo. Se há dente ou não depende de uma linha de código: g.TextRenderingHint = TextRenderingHint.AntiAlias; 

gerar imagem  

1com dentes 


2sem dentes

método de geração

string color = "#ff6633";" 
    System.Drawing.Bitmap image = new System.Drawing.Bitmap(170, 35);
    Graphics g = Graphics.FromImage(image);
    try
    {
      g.TextRenderingHint= TextRenderingHint.AntiAlias; //Remover arestas afiadas
      //Gerar gerador de números aleatórios
      Random random = new Random();
     //Limpar a cor de fundo da imagem
      //g.Clear(Color.Transparent);
      //Desenhar linhas de ruído de fundo na imagem
      /*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);
      //Desenhar pontos de ruído de primeiro plano na imagem
       //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()));
      //}
      //Desenhar a linha de contorno da imagem
      //g.DrawRectangle(new Pen(Color.White), 0, 0, image.Width) - 1, image.Height - 1);
      System.IO.MemoryStream ms = new System.IO.MemoryStream();
      Cor 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();
    }

Referências 

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

Isso é tudo o que há no artigo. Esperamos que isso ajude no seu aprendizado e que você apoie o tutorial Yell.

Declaração: O conteúdo deste artigo foi extraído da internet, pertence ao respectivo proprietário. O conteúdo foi contribuído e carregado voluntariamente pelos usuários da internet. Este site não possui direitos de propriedade, não foi editado manualmente e não assume responsabilidade por eventuais responsabilidades legais. Se você encontrar conteúdo suspeito de violação de direitos autorais, por favor, envie um e-mail para: notice#w.3Aviso: Este conteúdo foi extraído da internet, pertence ao respectivo proprietário. O conteúdo foi contribuído e carregado voluntariamente pelos usuários da internet. Este site não possui direitos de propriedade, não foi editado manualmente e não assume responsabilidade por eventuais responsabilidades legais. Se você encontrar conteúdo suspeito de violação de direitos autorais, por favor, envie um e-mail para: notice#w, fornecendo provas relevantes. Se confirmado, o conteúdo suspeito será imediatamente removido.

Você também pode gostar