将阿拉伯语文本导出为图像

时间:2009-08-16 17:54:24

标签: image text gd arabic

我在UTF-8中有一堆阿拉伯文字。我试图显示此设备的设备不支持显示的阿拉伯语文本。因此,我需要将文本转换为图像。

我想将每行文本保存为具有特定宽度的图像。我也需要使用特定的字体。做这个的最好方式是什么?有人知道这里有用的工具吗?

到目前为止我遇到的问题:

PHP + GD:阿拉伯字母看起来是分开的,不应该像草书一样。 VB.net:我可以将每行文本转储到richtextbox中......但我不知道如何导出该控件的图像。 Flash:不支持从右到左文本。

4 个答案:

答案 0 :(得分:3)

对于阿拉伯语,您需要一个库来反向字符/字形 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); 
?>

输出:

enter image description here

答案 1 :(得分: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

&LT;&LT;更新结束

或者,有一些程序使用unicode字符表示上下文阿拉伯字母表单和处理文本,并使其在无法正确呈现阿拉伯文本的系统上正确呈现。

以下是我所知道的:

它们都是开源的,因此即使您不使用这些语言,也可以使用您选择的编程语言学习代码并创建解决方案。

答案 2 :(得分:1)

有很多方法;例如,使用Windows.Forms,我想你:

  • 创建一个空的Image实例;我认为此时你定义了图像的尺寸
  • 使用Graphics.FromImage方法从Image创建Graphics实例
  • 调用Control的方法(RichTextBox),告诉它绘制自己:并且对于该方法,传递与图像关联的Graphics实例,以便将其自身绘制到图像上。

答案 3 :(得分: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服务器,也可以使用可视化Web开发人员。

您将获得的代码将文本转换为单行图像,但您可以指定宽度。在这种情况下,长行文本缩小并变得难以辨认。你需要的是根据指定的宽度进行文本换行。

此链接解释了如何更改fontwriter.ashx中的代码以实现文本换行。 http://www.codeproject.com/Questions/189513/Dynamic-Image-Replacement-Method-with-Csharp.aspx

第三次通过asp.net服务器运行你的页面。一旦你有了图像,你可以保存它,右键单击并另存为,使用Firefox,Firefox到目前为止效果最好。

现在,所有文字都会转换为图片,原始文字会以 alt 标签的形式添加到图片中。希望能帮助到你。

我打算尽快发布关于这个问题的教程。稍后请访问www.codeproject.com。