将文本添加到图像中而不保存
本文关键字:保存 图像 文本 添加 | 更新日期: 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"/>