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

C#如何消除验证码图片的锯齿效果

Introduzione 

      Sulla base della generazione dell'immagine è stata implementata una funzionalità di conversione del numero di telefono in immagine. Il contenuto è anche molto semplice, generare direttamente un'immagine png utilizzando il numero di telefono. È per rendere il colore di sfondo trasparente in modo che possa essere chiamato da altre parti. La presenza o meno dei dentelli dipende principalmente da una singola riga di codice: g.TextRenderingHint= TextRenderingHint.AntiAlias; 

Genera l'immagine  

1、Con dentelli 


2、Senza dentelli

Metodo di generazione

string color = "#ff6633"; 
    System.Drawing.Bitmap image = new System.Drawing.Bitmap(170, 35);
    Graphics g = Graphics.FromImage(image);
    try
    {
      g.TextRenderingHint= TextRenderingHint.AntiAlias; //Elimina i dentelli
      //Genera un generatore casuale
      Random random = new Random();
     //Cancella il colore di sfondo dell'immagine
      //g.Clear(Color.Transparent);
      //Disegna le linee di rumore di sfondo dell'immagine
      /*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);
      //Disegna i punti di rumore in primo piano dell'immagine
       //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()));
      //}
      //Traccia il perimetro dell'immagine
      //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();
    }

Riferimenti 

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

Questo è tutto il contenuto dell'articolo, speriamo che sia utile per la tua apprendimento, e speriamo che tutti possano sostenere Tutorial Shouting.

Dichiarazione: il contenuto di questo articolo è stato tratto da Internet, il copyright spetta agli autori, il contenuto è stato contribuito e caricato autonomamente dagli utenti di Internet, questo sito non possiede il diritto di proprietà, non è stato editato manualmente e non assume responsabilità per le relative responsabilità legali. Se trovi contenuti sospetti di violazione del copyright, ti preghiamo di inviare una e-mail a: notice#oldtoolbag.com (al momento dell'invio dell'e-mail, sostituisci # con @) per segnalare, fornendo prove pertinenti. Una volta verificata, questo sito cancellerà immediatamente il contenuto sospetto di violazione del copyright.