将文本添加到图像中而不保存

本文关键字:保存 图像 文本 添加 | 更新日期: 2023-09-27 18:13:00

我想在c#中应用一些文本在横幅图像上。到目前为止,我有一个类控制,通过标题,href和图像src,但我想添加文本到它而不保存它。

所以我想使用我拖过的标题并将其应用到顶部。

下面是我试图应用到它的图形。我只是想在上面叠加文字,而不是创建一个新的图像。

private void GenerateBannerTitle()
{
    Bitmap bannerSource = new Bitmap(PhysicalBannerPath);
    //bannerSource.Save(PhysicalBannerPath);
    RectangleF rectf = new RectangleF(430, 50, 650, 50);
    using (Graphics g = Graphics.FromImage(bannerSource))
    {
        g.SmoothingMode = SmoothingMode.AntiAlias;
        g.InterpolationMode = InterpolationMode.HighQualityBicubic;
        g.PixelOffsetMode = PixelOffsetMode.HighQuality;
        g.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
        g.DrawString("hfsdfdsfds", new Font("courier sans", 100, FontStyle.Bold), Brushes.White, rectf);
    }
}

任何帮助或想法。这可以通过c#中的内联css来完成吗?或者可以有一种方法来改变我现在所拥有的,只是应用在顶部。

此刻我只是通过图像拉。它只是应用文本,我需要理解和工作

将文本添加到图像中而不保存

使用内存流作为base64字符串返回图像

private string GenerateBannerTitle()
    {
        var bitmap = new Bitmap(PhysicalBannerPath);
        RectangleF rectf = new RectangleF(430, 50, 650, 50);
        using (var g = Graphics.FromImage(bitmap))
        {
            using (var arialFont = new Font("Arial", 10))
            {
                g.SmoothingMode = SmoothingMode.AntiAlias;
                g.InterpolationMode = InterpolationMode.HighQualityBicubic;
                g.PixelOffsetMode = PixelOffsetMode.HighQuality;
                g.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
                g.DrawString("hfsdfdsfds", new Font("courier sans", 100, FontStyle.Bold), Brushes.White, rectf);
            }
        }

        var ms = new MemoryStream();
        bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
        var arr = new byte[ms.Length];
        ms.Position = 0;
        ms.Read(arr, 0, (int)ms.Length);
        ms.Close();
        var strBase64 = Convert.ToBase64String(arr);
        return strBase64;
    }

在html中显示它,如:

<img src="data:image/jpg;base64,the returned data"/>