首页 新闻 会员 周边

ASP.NET Core 3.0 Graphics.DrawString 在 CentOS 7上乱码(方框)问题

0
[已解决问题] 解决于 2019-12-04 14:32

开发环境: .NET Core 3.0
部署环境: CentOS 7
代码:
public IActionResult GetImage(string str)
{
if (string.IsNullOrEmpty(str)) str = "123";
string bgImageFile = $"{hostingEnv.WebRootPath}/image/bg.jpg";
string newJpgFile = $"{hostingEnv.WebRootPath}/image/new.jpg";

using (var image = Image.FromFile(bgImageFile))
{
    using (Graphics g = Graphics.FromImage(image))
    {
        using (Font font = new Font("Monospace", 12, FontStyle.Regular))
        {
            using (SolidBrush brush = new SolidBrush(Color.Black))
            {
                g.DrawString(str, font, brush, 0, 0);
                image.Save(newJpgFile);
            }
        }
    }
}
return File("/image/new.jpg", "image/jpeg");

}

DrawString 一个字符正常:

DrawString 两个以上字符就乱码,出现方框:

在开发环境和部署到在 Windwos 下一切正常。

同样的代码,用 .Net Core 2.0 开发并部署在同一台CentOS上运行,DrawString 任意长度的字符串都正常。

.NET Core 3.0 部署到 CentOS(Graphics.DrawString)需要特殊配置?

大豆男生的主页 大豆男生 | 小虾三级 | 园豆:608
提问于:2019-12-03 16:48
< >
分享
最佳答案
0

自己解决了:

更新 System.Drawing.Common 到 4.7 即可。4.7 版本的是今天刚发布的。。。原来是 System.Drawing.Common 的 Bug 啊!!

大豆男生 | 小虾三级 |园豆:608 | 2019-12-04 14:30
其他回答(2)
0

看看默认的字体是什么,你的centos上或许没有Monospace这个字体。

Timetombs | 园豆:3954 (老鸟四级) | 2019-12-04 10:24

有 Monospace 这个字体

支持(0) 反对(0) 大豆男生 | 园豆:608 (小虾三级) | 2019-12-04 10:45
0

这个可能和你html 页面编码有关系。

gw2010 | 园豆:1487 (小虾三级) | 2019-12-04 11:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册