添加文本到图像而不保存

时间:2016-10-14 10:50:40

标签: c# asp.net

我希望能够在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来完成,或者可以有一种方法来改变我现在所拥有的只是将其应用于顶部。

目前我正在翻阅图像。它只是应用我需要理解并开始工作的文本。

1 个答案:

答案 0 :(得分:1)

使用内存流将图像作为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"/>