Гадкий рендеринг изображения с DrawString-методом (ASP.NET) - PullRequest
3 голосов
/ 10 ноября 2010

Я хочу визуализировать некоторый текст как изображение в ASP.NET. Это работает хорошо, но текст отображается очень некрасиво (с серыми пикселями вокруг текста), даже если я включаю AntiAlias ​​(или ClearType), изменяя графическую опцию TextRenderingHint.

Вот соответствующий код:

    float width;
    float height;

    System.Drawing.Text.PrivateFontCollection fontcollection = new System.Drawing.Text.PrivateFontCollection();
    // Add the custom font families
    fontcollection.AddFontFile(Server.MapPath("./Fonts/" + fontfile));


    Bitmap image = new Bitmap(10, 10);
    Graphics graphic = Graphics.FromImage(image);
    Font font = new Font(fontcollection.Families.First(), fontsize, style);

    SizeF size = graphic.MeasureString(text, font);
    width = size.Width;
    height = size.Height;

    image = new Bitmap(Convert.ToInt32(width), Convert.ToInt32(height));
    graphic = Graphics.FromImage(image);
    graphic.FillRectangle(new SolidBrush(Color.White), 0, 0, width, height);

    graphic.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
    graphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Bicubic;
    graphic.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
    graphic.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;

    graphic.DrawString(text, font, Brushes.Black, new PointF(0, 0));

    Response.ContentType = "image/jpeg";
    image.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);

Здесь ссылка на сгенерированное изображение (увеличение):

enter image description here

Изображение без увеличения:

enter image description here

Как я могу решить эту проблему?

1 Ответ

2 голосов
/ 10 ноября 2010

Сделать формат изображения PNG.

Сжатие JPEG по умолчанию бесполезно.

...