4

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

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

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

PHP + GD:阿拉伯字母分开显示,而不是应有的草书。VB.net:我可以将每一行文本转储到一个丰富的文本框中......但我不知道如何导出那个控件的图像。Flash:不支持从右到左的文本。

4

4 回答 4

3

至于阿拉伯语,您需要一个库来反转PHP/GD的字符/字形。参见例如http://sourceforge.net/projects/ar-php/http://www.ar-php.org/

确保您的PHP 文件编码为un​​icode/UTF
例如 > 打开记事本 > 另存为 > 编码为 UTF-8:

在 PHP 中使用imagettftext的阿拉伯文排版示例用法:

<?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

有很多方法;以 Windows.Forms 为例,我认为你:

  • 创建一个空的 Image 实例;我认为此时您可以定义图像的尺寸
  • 使用 Graphics.FromImage 方法从 Image 创建一个 Graphics 实例
  • 调用 Control 的方法(RichTextBox),告诉它自己绘制:并向该方法传递与您的图像关联的 Graphics 实例,以便它将自己绘制到图像上。
于 2009-08-16T19:11:12.160 回答
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。

于 2011-05-14T17:59:43.183 回答