экспортировать арабский текст в виде изображений

StackOverflow https://stackoverflow.com/questions/1284896

  •  18-09-2019
  •  | 
  •  

Вопрос

У меня есть несколько строк арабского текста в UTF-8.Устройство, которое я пытаюсь отобразить, не поддерживает отображение арабского текста.Поэтому мне нужно преобразовать текст в изображения.

Я хотел бы сохранить каждую строку текста как изображение определенной ширины.Мне также нужно использовать определенный шрифт.Как лучше всего это сделать?Кто-нибудь знает инструмент, который может быть здесь полезен?

Проблемы, с которыми я столкнулся до сих пор:

PHP + ГД:Арабские буквы отображаются отдельными буквами, а не курсивом, как следовало бы.ВБ.нет:Я могу сбросить каждую строку текста в richtextbox...но я не знаю, как экспортировать изображение именно этого элемента управления.Вспышка:нет поддержки текста справа налево.

Это было полезно?

Решение

Что касается арабский, вам нужна библиотека, чтобы перевернуть символы/глифы для PHP/GD.см., например http://sourceforge.net/projects/ar-php/ или в http://www.ar-php.org/.

Убеждаться твой PHP-файл кодировка находится в Юникод/UTF.
например> откройте Блокнот > Сохранить как > закодируйте как UTF-8:

Пример использования арабской типографики в PHP с использованием изображениеttftext:

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

Другие советы

я это слышал панго довольно хорошо обрабатывает арабскую раскладку.хотя не использовал его.

Обновлять:

Утилита 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

<< конец обновления

Альтернативно, есть несколько программ, которые используют символы Юникода, которые представляют контекстные формы арабских букв и обрабатывают текст и обеспечивают его правильную визуализацию в системах, которые не могут правильно отображать арабский текст.

Вот те, о которых я знаю:

Все они имеют открытый исходный код, поэтому даже если вы не используете ни один из этих языков, вы можете изучить код и создать решение на выбранном вами языке программирования.

Есть много способов;например, используя Windows.Forms, я думаю, вы:

  • Создайте пустой экземпляр изображения;Я думаю, что на этом этапе вы определяете размеры изображения.
  • Создайте экземпляр Graphics из изображения, используя метод Graphics.FromImage.
  • Вызовите метод элемента управления (RichTextBox), который прикажет ему отрисовать себя:и этому методу передайте экземпляр Graphics, связанный с вашим изображением, чтобы он нарисовал себя на изображении.

Я не уверен, что вы все еще ждете ответа, но для вашей проблемы есть очень чистое и аккуратное решение.Вы можете изменить любой текст, включая rtl, на изображение на основе его класса CSS.Но сначала позвольте мне сказать вам, что PHP и GD, что бы то ни было, не приносят никакой пользы для текста в формате RTL.Вам следует попробовать замену текста asp.net в зависимости от ширины.

Однажды я шел по тому же пути и боролся несколько дней.Вот что вам следует сделать.

Сначала перейдите по следующему адресу, просмотрите руководство и загрузите файлы.http://weblogs.asp.net/yaneshtyagi/archive/2008/11/07/text-to-image-convertor.aspx

Во-вторых, вам нужен сервер asp.net.Вы можете установить его или использовать один из этих виртуальных серверов, например сервер mono asp.net, или использовать визуальный веб-разработчик.

Код, который вы получите, преобразует текст в однострочное изображение, хотя вы можете указать ширину.В этом случае длинная строка текста сжимается и становится неразборчивой.Что вам нужно, так это перенос текста на основе указанной ширины.

Здесь, по этой ссылке, объясняется, как изменить код в Fontwriter.ashx, чтобы добиться переноса текста. http://www.codeproject.com/Questions/189513/Dynamic-Image-Replacement-Method-with-Csharp.aspx

В-третьих, запустите свою страницу через сервер asp.net.Когда у вас есть изображения, вы можете сохранить их, щелкните правой кнопкой мыши и сохраните, поскольку с Firefox Firefox работает лучше всего.

Теперь весь текст преобразуется в изображения, а исходный текст будет добавлен к изображению как альтернативный вариант ярлык.Надеюсь, поможет.

Я планирую опубликовать руководство по этой проблеме в ближайшее время.Посетите www.codeproject.com позже.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top