4

UTF-8 のアラビア語テキストがたくさんあります。これを表示しようとしているデバイスは、アラビア語テキストの表示をサポートしていません。したがって、テキストを画像に変換する必要があります。

テキストの各行を特定の幅の画像として保存したいと思います。特定のフォントも使用する必要があります。これを行う最善の方法は何ですか?ここで役立つツールを知っている人はいますか?

これまでに遭遇した問題:

PHP + GD: アラビア文字が区切られて表示され、本来の筆記体ではありません。VB.net: テキストの各行をリッチテキスト ボックスにダンプできますが、そのコントロールだけの画像をエクスポートする方法がわかりません。Flash: 右から左へのテキストはサポートされていません。

4

4 に答える 4

3

Arabicに関しては、 PHP/GDの文字/グリフを逆にするためのライブラリーが必要です。たとえばhttp://sourceforge.net/projects/ar-php/またはhttp://www.ar-php.org/を参照してください。

PHP ファイルのエンコーディングがunicode/UTFであることを確認してください。
例 > メモ帳を開く > 名前を付けて保存 > UTF-8 としてエンコード:

imagettftextを使用した 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); 
?>

出力:

ここに画像の説明を入力

于 2014-09-09T22:21:56.970 に答える
2

pangoはアラビア語のレイアウトをうまく処理できると聞いたことがあります。使っていませんが。

アップデート:

このユーティリティは、任意の言語で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 文字を使用してテキストを処理し、アラビア語のテキストを適切にレンダリングできないシステムで適切にレンダリングするプログラムがいくつかあります。

私が知っているものは次のとおりです。

これらはすべてオープン ソースであるため、これらの言語を使用していない場合でも、コードを調べて、選択したプログラミング言語でソリューションを作成できます。

于 2009-08-16T19:19:24.370 に答える
1

あなたがまだ答えを待っているかどうかはわかりませんが、あなたの問題には非常にクリーンできちんとした解決策があります。cssクラスに基づいて、rtlを含む任意のテキストを画像に変更できます。しかし、最初に言っておきますが、PHPとGDは、rtlテキストには何の役にも立ちません。幅に基づいてasp.netテキスト置換を試す必要があります。

一度私は同じ道を歩き、何日も苦労しました。これがあなたがすべきことです。

まず、次のアドレスに移動し、チュートリアルを参照してファイルをダウンロードします。 http://weblogs.asp.net/yaneshtyagi/archive/2008/11/07/text-to-image-convertor.aspx

次に、asp.netサーバーが必要です。インストールするか、mono asp.netサーバーなどの仮想サーバーの1つを使用するか、ビジュアルWeb開発者を使用することができます。

取得するコードは、テキストを1行の画像に変換しますが、幅を指定することもできます。その場合、テキストの長い行が縮小して判読できなくなります。必要なのは、指定された幅に基づいてテキストを折り返すことです。

このリンクでは、fontwriter.ashxのコードを変更してテキストの折り返しを実現する方法を説明しています。http://www.codeproject.com/Questions/189513/Dynamic-Image-Replacement-Method-with-Csharp.aspx

3番目にasp.netサーバーを介してページを実行します。保存できる画像ができたら、右クリックして保存します。Firefoxを使用すると、これまでのところFirefoxが最適に機能します。

これで、すべてのテキストが画像に変換され、元のテキストがaltタグとして画像に追加されます。それが役に立てば幸い。

この問題に関するチュートリアルをすぐに投稿する予定です。後でwww.codeproject.comを確認してください。

于 2011-05-14T17:59:43.183 に答える
1

多くの方法があります。たとえば Windows.Forms を使用すると、次のようになります。

  • 空の Image インスタンスを作成します。この時点で、画像の寸法を定義すると思います
  • Graphics.FromImage メソッドを使用して、Image から Graphics インスタンスを作成します。
  • Control のメソッド (RichTextBox) を呼び出して、自分自身をペイントするように指示します。そのメソッドに、画像に関連付けられた Graphics インスタンスを渡し、自分自身を画像にペイントします。
于 2009-08-16T19:11:12.160 に答える