2012-04-16 3 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初心者が画像を投稿することが許可されていません。

高解像度のアンチエイリアスがあるのですばらしいです。 LCDには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初心者は画像を投稿できません。

誰でも、PythonでTrueTypeフォントを抽出する方法を知っていますか/ ImageMagickは、LCDに適しています(アンチエイリアス、2色、小サイズ/低解像度)?

ご協力いただきありがとうございます。

答えて

1

SimSunはwell hintedと思われますので、小さいピクセルサイズでは鮮明で読みやすいです。下のスクリーンショットはキャラクターから吹き飛ばされている(私はそれが何であるかわからないので、それは無礼で、それは私の意図ではない:))Windows 7では10フィートのフォントサイズでワードパッドに貼り付けた。

Screenshot of SimSun

ので:あなたが適切にヒンティングのフォントをサポートしているライブラリを使用してグリフの描画の選択肢を検討することをお勧めします。 FreeTypeはこれを行います(私が正しく覚えていれば、アルゴリズムは依然として特許の妨げになっています)、サーバプラットフォームもWindowsであれば、C#/ GDIPlusアプリケーションを書くのはかなり簡単ですあなたのためのテキストをレンダリングします。

EDIT:好奇心と退屈のうち私は実際にfreetype2のに安いのPython​​バインディングを実装し、freetype2のチュートリアル以下も同様に安価なレンダリングコードを追加しました。小さなサイズであってもまともな仕事をしているように見えます。ヒントなどは調整可能です。私は自分のコードでデフォルトを使っています。

enter image description here

コードがhttps://bitbucket.org/akx/python-minift/srcで提供されています - 私はそれが必要のように働いて、それについては何の保証を行っていないんだけど、それはまともな出発点です。

+0

ありがとうございました。フォントのヒントはたくさん説明します。プロダクションサーバーのOSがわからないので、ポータブルなソリューションが望ましいです。たとえば、Python/PHP/GCCなどです。ところで、私はWindowsのプログラミングがうまくいかない。別の方法として、私はDOSで元の中国語ビットマップフォントを見つける。Windows/Linux上でPython/Cで処理するのは簡単です。しかし、私のプロジェクトは言語に依存せず、PanEuro /韓国語/日本語/アラビア語/ペルシア語など他の言語もサポートしなければならないので、ユニコードを最初に選択する必要があります。 –

+0

@KaiLiu - 私の修正された答えを見てください! :) – AKX

+0

クール。ありがとう、それは良いコードベースになる可能性があります。試してみましょう。 –

関連する問題