экспортировать арабский текст в виде изображений
Вопрос
У меня есть несколько строк арабского текста в 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);
?>
Выходы:
Другие советы
я это слышал панго довольно хорошо обрабатывает арабскую раскладку.хотя не использовал его.
Обновлять:
Утилита 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
<< конец обновления
Альтернативно, есть несколько программ, которые используют символы Юникода, которые представляют контекстные формы арабских букв и обрабатывают текст и обеспечивают его правильную визуализацию в системах, которые не могут правильно отображать арабский текст.
Вот те, о которых я знаю:
- Бесплатный Рессам, написано мной на Python ^_^
- Тадвин, написанный на C#,
- арабский писатель, написанный на JavaScript
Все они имеют открытый исходный код, поэтому даже если вы не используете ни один из этих языков, вы можете изучить код и создать решение на выбранном вами языке программирования.
Есть много способов;например, используя 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 позже.