1

我有一个项目,它将中文文本转换为位图以进行远程 LCD 显示。因为它在服务器中运行,所以首选命令行工具。

我正在尝试使用 Python/PIL 和 ImageMagick 来实现这样的系统。ImageMagick 用于在 Python/PIL 将文本转换为用于远程显示的特殊数据包格式之前从文本生成位图。

从 IM 网站阅读 IM6 示例后:

我发现抗锯齿在这个过程中会造成麻烦。例如,它适用于以下命令:

C:\ImageMagick-6.6.6-6\convert -background lightblue -fill blue -pointsize 48 -font "SimSun-&-NSimSun" label:@chinese_words.utf8 label_utf8_simsun.gif

生成的图像 新手不允许发布图像。

它看起来很棒,因为它具有高分辨率的抗锯齿功能。LCD 只有黑白,没有消除锯齿,而且必须是低分辨率,例如 12x12 像素。我尝试了以下脚本。

C:\ImageMagick-6.5.6-Q16\convert -pointsize 16 -font "SimSun-&-NSimSun" +antialias -strokewidth 0.4 -threshold 50%% label:@chinese_words.utf8 label_utf8_simsun_16_bw_strokewid1.gif

结果看起来很糟糕,并且缺少位图像素。

生成图片新手不允许发布图片。

有谁知道如何使用适用于 LCD 的 Python/ImageMagick 提取 truetype 字体(无抗锯齿、双色、小尺寸/低分辨率)?

提前感谢您的帮助!

4

1 回答 1

2

SimSun 似乎得到了很好的暗示,因此它在小像素尺寸下清晰易读。下面的屏幕截图是从一个字符放大的(我不知道它是什么,所以如果它是……粗鲁,那不是我的意图:))我在 Windows 7 中以 10 pt 字体大小粘贴到写字板中。

SimSun 截图

所以:您可能想研究使用正确支持字体提示的库来呈现字形的替代方案。FreeType 会这样做(当编译为具有提示支持时——如果我没记错的话,该算法仍受专利保护),如果您的服务器平台也是 Windows,那么编写 C#/GDIPlus 应用程序将相当容易为您呈现文本。

编辑:出于好奇和无聊,我实际上实现了与 Freetype2 的廉价 Pythonctypes绑定,并在 Freetype2 教程之后添加了同样廉价的渲染代码。即使在小尺寸下似乎也做得不错——并且提示等是可调整的,我只是在我的代码中使用默认值。

在此处输入图像描述

该代码可在https://bitbucket.org/akx/python-minift/src获得——我不保证它会正常工作,但它是一个不错的起点。

于 2012-04-16T10:46:24.063 回答