2012-04-16 68 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