在Windows Server进程中导入字体
本文关键字:导入 字体 进程 Windows Server | 更新日期: 2023-09-27 18:07:53
我有一个用于图像处理的服务。其中一项任务是在图像上覆盖一个字符串,然后将其发送给程序并显示。
我在位图图像上叠加文本时遇到了麻烦,有人能帮忙吗?
我正在尝试使用:
PrivateFontCollection fonts = new PrivateFontCollection();
public static FontFamily LoadFontFamily(string fileName, out PrivateFontCollection fontCollection)
{
fontCollection = new PrivateFontCollection();
fontCollection.AddFontFile(HostingEnvironment.ApplicationPhysicalPath + '/' + fileName);
return fontCollection.Families[0];
}
FontFamily family = LoadFontFamily("arial.ttf", out fonts);
Font font = new Font(family, 20);
using (Graphics g = Graphics.FromImage(bitmap))
{
g.DrawString("text", font, new SolidBrush(GetColorFromHexString(foreground)), new PointF(10F, 10F));
}
根据本页的信息。
由于该服务不知道'Arial'是什么-它显然是失败的。我已经将。ttf字体作为服务中的资源,并将构建内容设置为'copy always'。
谢谢!
Arial是最古老的Windows字体之一,它一直是所有Windows操作系统版本(包括Windows服务器)默认安装的一部分。所以没有理由:
Font font = new Font("Arial", 20);
不工作。
Wcf与字体无关,所以我建议去掉这个标签。
如果你没有错误,但是你的图像不包含你的字符串-你的逻辑是无效的。
我建议以下步骤:
- 确保此代码在常规winforms项目上工作
- 尝试将此逻辑重构到单独的dll(类库,而不是win窗体)中。如果你有Resharper这样的工具,它会添加所有需要的引用。此时
-你的代码应该在所有情况下都能工作,所以 - 将其移回以通过wcf服务公开。