アラビア語のテキストを画像としてエクスポート
質問
UTF-8 のアラビア語テキストが大量にあります。これを表示しようとしているデバイスは、アラビア語テキストの表示をサポートしていません。したがって、テキストを画像に変換する必要があります。
テキストの各行を特定の幅の画像として保存したいと考えています。特定のフォントも使用する必要があります。これを行うための最良の方法は何ですか?ここで役立つツールを知っている人はいますか?
これまでに遭遇した問題:
PHP + GD:アラビア文字は区切られて表示され、本来の筆記体ではありません。VB.ネット:テキストの各行をリッチテキストボックスにダンプできます...しかし、そのコントロールのイメージだけをエクスポートする方法がわかりません。閃光:右から左へのテキストはサポートされていません。
解決
はどうかと言うと アラビア語, 、ライブラリが必要です 文字/グリフを反転する のために PHP/GD. 。例を参照してください。 http://sourceforge.net/projects/ar-php/ または http://www.ar-php.org/.
確認する あなたの PHPファイル エンコーディングが入っています ユニコード/UTF.
例えば> メモ帳を開きます > 名前を付けて保存 > UTF-8 としてエンコードします。
PHP でのアラビア語タイポグラフィの使用例 画像テキスト:
<?php
// The text to draw
require('./I18N/Arabic.php');
$Arabic = new I18N_Arabic('Glyphs');
$font = './DroidNaskh-Bold.ttf';
$text = $Arabic->utf8Glyphs('لغةٌ عربيّة');
// Create the image
$im = imagecreatetruecolor(600, 300);
// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 599, 299, $white);
// Add the text
imagettftext($im, 50, 0, 90, 90, $black, $font, $text);
// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im, "./output_arabic_image.png");
echo 'open: ./output_arabic_image.png';
imagedestroy($im);
?>
出力:
他のヒント
それを聞いたことがあります パンゴ アラビア語レイアウトをうまく処理します。使ったことはありませんが。
アップデート:
ユーティリティ pango-view
テキストをレンダリングできます どれでも 言語を入力して画像として出力する
$ pango-view input_file.txt --no-display --output=image.png
または、オプションとしてテキストを指定することもできます。
$ pango-view --no-display --output=image.png --text="your sentence"
幅を指定することもできます。
--width=50 -wrap=word
<< 更新終了
あるいは、文脈に応じたアラビア文字の形式を表す Unicode 文字を使用してテキストを処理し、アラビア語のテキストを適切に表示できないシステムでも適切に表示できるようにするプログラムがいくつかあります。
私が知っているものは次のとおりです。
これらはすべてオープンソースであるため、これらの言語を使用しない場合でも、コードを研究し、選択したプログラミング言語でソリューションを作成できます。
方法はたくさんあります。たとえば Windows.Forms を使用すると、次のようになると思います。
- 空の Image インスタンスを作成します。この時点で画像のサイズを定義すると思います
- Graphics.FromImage メソッドを使用して、Image から Graphics インスタンスを作成します。
- コントロール (RichTextBox) のメソッドを呼び出して、それ自体をペイントするように指示します。そしてそのメソッドに、画像に関連付けられた Graphics インスタンスを渡し、それ自体が画像上にペイントされるようにします。
私はあなたがまだ答えを待っているかどうかわからないのですが、あなたの問題のための非常にきれいで、きちんとした解決策があります。あなたは自分のCSSクラスに基づいて画像に、RTLを含め、任意のテキストを変更することができます。しかし、私は、史上初の、RTLテキストの任意の良いしませんどのようなPHPとGDをあなたを教えてみましょう。あなたは幅に基づいてasp.netのテキスト置換を試してみてください。
私は同じ道を歩いて、日のために苦労したら。ここではあなたが何をすべきかです。
まず、以下のアドレスにアクセスして、チュートリアルを参照してファイルをダウンロードしてください。 http://weblogs.asp.net /yaneshtyagi/archive/2008/11/07/text-to-image-convertor.aspxする
第二に、あなたはasp.netのサーバーを必要としています。あなたはそれをインストールするかは、そのようなモノのasp.netサーバとして、これらの仮想サーバーのいずれかを使用することができ、またはあなたが視覚的なWeb開発者を使用することができます。
あなたが幅を指定することができますが、あなたが得るのコードは、単一ライン画像にテキストを変換します。その場合、テキストの長い行が縮小して読めなくなりました。何が必要指定された幅に基づいてラップをテキストにあります。
ここでは、テキストの折り返しを達成するためにfontwriter.ashxにコードを変更する方法について説明し、このリンクインチ http://www.codeproject.com/Questions /189513/Dynamic-Image-Replacement-Method-with-Csharp.aspxする
第三には、asp.netのサーバーを経由して、ページを実行します。あなたがイメージを持ってたら、右のFirefox、Firefoxのこれまでの最高の作品で、とクリックして保存し、それを保存することができます。
次に、すべてのテキストが画像に変換され、元のテキストは、のALT のタグとして画像に付加されます。それが役に立てば幸い。
私はすぐに問題のチュートリアルを掲載する予定です。後でwww.codeproject.com確認します。