2012-04-16 25 views
1

我有一个项目,它将中文文本转换为位图进行远程LCD显示。因为它在服务器上运行,命令行工具是首选。试图提取字体与Python或ImageMagick

我想使用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

Generated image新手不允许张贴图片。

它看起来不错,因为它具有高分辨率的抗混叠效果。液晶显示器只有B/W,没有别名,它必须是低分辨率,如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

结果看起来很可怕,和位图像素丢失。

Generate Image新手不允许发布图片。

有谁知道如何提取truetype字体与Python/ImageMagick适合LCD(没有抗混叠,双色,小尺寸/低分辨率)?

感谢您的帮助提前!

回答

1

SimSun似乎是well hinted,所以它在小像素尺寸下清晰易读。下面的截图是从一个角色被炸掉的(我不知道它是什么,所以如果它是...粗鲁的,那不是我的意图:))我在Windows 7中以10pt字体大小粘贴到写字板中。

Screenshot of SimSun

所以:你可能要考虑这样做使得使用支持字体提示正确库字形的替代品。 FreeType是这样做的(编译时提供暗示支持 - 如果我没有记错的话,该算法仍然是专利受阻的),并且如果您的服务器平台也是Windows,那么编写C#/ GDIPlus应用程序相当容易为你呈现文字。

编辑:出于好奇和无聊我实际实现的Python便宜绑定​​向对FreeType2并添加以下的对FreeType2教程同样便宜的渲染代码。似乎即使在小尺寸下也能做出体面的工作 - 而暗示等是可调整的,我只是用我的代码中的默认值。

enter image description here

的代码可以在https://bitbucket.org/akx/python-minift/src - 我正在做关于它的工作像它应该没有保证,但它是一个不错的起点。

+0

谢谢。字体提示解释了很多。我不确定生产服务器的操作系统,因此便携式解决方案是首选。例如,Python/PHP/GCC或类似的。顺便说一句,我不擅长Windows编程。作为一种替代方法,我在DOS中找到了一个原生的中文位图字体。在Windows/Linux下使用Python/C很容易处理它。不过,unicode应该是第一选择,因为我的项目是独立于语言的,应该支持其他语言,包括PanEuro /韩文/日文/阿拉伯文/波斯文等。我将继续使用Google。 – 2012-04-16 12:41:46

+0

@KaiLiu - 看到我修正的答案! :) – AKX 2012-04-16 17:26:35

+0

很酷。非常感谢,它可能是一个很好的代码库。让我试试看。 – 2012-04-17 01:04:38