python - 尝试使用Python或ImageMagick提取字体

标签 python fonts imagemagick cjk rasterizing

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

我正在尝试使用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新手不允许发图片。

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

C:\ImageMagick-6.5.6-Q16\convert -pointsize 16 -font "SimSun-&-NSimSun"+antialias -行程宽度 0.4 -阈值 50%% label:@chinese_words.utf8 label_utf8_simsun_16_bw_行程wid1.gif

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

Generate Image新手不允许发图片。

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

提前感谢您的帮助!

最佳答案

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

Screenshot of SimSun

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

编辑:出于好奇和无聊,我实际上实现了与 Freetype2 的廉价 Python ctypes 绑定(bind),并按照 Freetype2 教程添加了同样便宜的渲染代码。即使在小尺寸下,似乎也能完成不错的工作——并且提示等是可以调整的,我只是使用代码中的默认值。

enter image description here

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

关于python - 尝试使用Python或ImageMagick提取字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10169149/

相关文章:

python - 如何设置断点()来启动IPython shell? (Python 3.7+)

python - PIL 图像到数组(numpy 数组到数组) - Python

r - 如何使用 magick 包删除图像背景?

python - itertools.islice 在与 functools.partial 一起使用时引发 ValueError

python - 设置具有两个索引列的时间序列 Pandas Dataframe 的频率

fonts - 在vis.js中选择时是否可以在节点上设置字体颜色?

html - 第一个字母 CSS 上的左空格

html - @font-face 似乎不适用于本地主机

jQuery 将图像附加到 div 不显示,但可以在 Firebug 上看到它

php - 在没有ImageMagick的情况下在PHP中将PDF转换为图像