Nedanstående kod använder jag för att generera ut en bild med bokstaven I. Problemet som jag får är att texten blir suddig och bakgrunden innehåller en mängd pixlar i gråton. Hur får jag till så att texten blir skarp samt att bakgrunden inte har några gråa pixlar? Bilden jag testar med är en bild med helt vit bakgrund. Storleken på bilden är 16x16.
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
System.Drawing.Image ImageMap = System.Drawing.Image.FromFile(Server.MapPath("WhiteBox.jpg"));
Graphics G = Graphics.FromImage(ImageMap);
Rectangle Rect = new Rectangle(1, 1, 14, 14);
Font TextStyle = new Font("Verdana", 11F, FontStyle.Regular);
StringFormat Format = new StringFormat();
Format.Alignment = StringAlignment.Center;
Format.LineAlignment = StringAlignment.Center;
GraphicsPath path = new GraphicsPath();
path.AddString("I", TextStyle.FontFamily, (int)TextStyle.Style, TextStyle.Size, Rect, Format);
SolidBrush fgBrush = new SolidBrush(Color.Black);
G.FillPath(fgBrush, path);
ImageMap.Save(Server.MapPath("WhiteBoxWithChar.jpg"));
TextStyle.Dispose();
G.Dispose();
ImageMap.Dispose();
}
}
Jag fick bort de gråtonade pixlarna i bakgrunden när jag körde gif istället för jpg. Det är en sak kvar och det är att bokstaven är en aning tonad. Kan man få bort det?
Här är den kod jag hittills kört. Jag var tvungen att streama bilden för annars fick jag detta "A Graphics object cannot be created from an image that has an indexed pixel format." Men det är inga problem.
protected void Page_Load(object sender, EventArgs e)
{
Bitmap ImageMap;
using (Stream stream = File.Open(Server.MapPath("WhiteBox.gif"), FileMode.Open))
{
ImageMap = new Bitmap(new Bitmap(Image.FromStream(stream)));
}
Graphics G = Graphics.FromImage(ImageMap);
Rectangle Rect = new Rectangle(1, 1, 14, 14);
Font TextStyle = new Font("Verdana", 11F, FontStyle.Regular);
StringFormat Format = new StringFormat();
Format.Alignment = StringAlignment.Center;
Format.LineAlignment = StringAlignment.Center;
GraphicsPath path = new GraphicsPath();
path.AddString("I", TextStyle.FontFamily, (int)TextStyle.Style, TextStyle.Size, Rect, Format);
SolidBrush fgBrush = new SolidBrush(Color.Black);
G.FillPath(fgBrush, path);
G.CompositingQuality = CompositingQuality.HighQuality;
G.SmoothingMode = SmoothingMode.AntiAlias;
G.InterpolationMode = InterpolationMode.HighQualityBicubic;
G.PixelOffsetMode = PixelOffsetMode.HighQuality;
ImageMap.Save(Server.MapPath("WhiteBoxWithChar.gif"));
TextStyle.Dispose();
G.Dispose();
ImageMap.Dispose();
}
263 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e