esportazione del testo arabo come immagini
Domanda
Ho un sacco di righe di testo in arabo in UTF-8. Il dispositivo che sto cercando di visualizzare questa non supporta testo arabo visualizzato. Pertanto, ho bisogno di convertire il testo in immagini.
Vorrei salvare ogni linea di testo come immagine con una larghezza specifica. Ho bisogno di utilizzare un carattere specifico pure. Qual è il modo migliore per farlo? Qualcuno sa di uno strumento che può essere utile qui?
I problemi che ho incontrato finora:
PHP + GD: lettere arabe appaiono separati e non in corsivo come dovrebbero. VB.net: Posso scaricare ogni riga di testo in un RichTextBox ... ma non so come esportare l'immagine del proprio questo controllo. Flash:. Alcun supporto per testo da destra a sinistra
Soluzione
Per quanto riguarda la arabo , è necessario una libreria per invertire carboni / glifi per PHP / GD . si veda ad esempio http://sourceforge.net/projects/ar-php/ o all'indirizzo http://www.ar-php.org/ .
Assicurati che file PHP di codifica è in unicode / UTF .
per esempio. > Blocco note aperto> Salva con nome> codifica UTF-8:
Utilizzo di esempio per la tipografia araba in PHP utilizzando 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);
?>
Uscite:
Altri suggerimenti
Ho sentito dire che Pango gestisce il layout arabo abbastanza bene. Non hanno usato però.
Aggiornamento:
Il pango-view
utilità può rendere il testo in qualsiasi lingua e di uscita come immagine
$ pango-view input_file.txt --no-display --output=image.png
oppure si può fornire il testo come una scelta così:
$ pango-view --no-display --output=image.png --text="your sentence"
È inoltre possibile specificare una larghezza:
--width=50 -wrap=word
<< fine aggiornamento
In alternativa, ci sono alcuni programmi che utilizzano i caratteri Unicode che rappresentano forme lettera araba contestuali e testo di processo e lo rendono di rendering correttamente su sistemi che non possono rendere il testo in arabo correttamente.
Qui ci sono quelli che conosco di:
- Il libero Ressam, scritto in python, da me ^ _ ^
- Tadween , scritto in C #,
- arabo scrittore , scritto in JavaScript
Sono tutti open source, quindi, anche se non si utilizza una di queste lingue, si può studiare il codice e creare una soluzione nel linguaggio di programmazione di scelta.
Ci sono molti modi; utilizzando Windows.Forms per esempio, è penso:
- Creare un'istanza Immagine vuota; Credo che a questo punto si definisce dimensioni dell'immagine
- Creare un'istanza Graphics dall'immagine, utilizzando il metodo Graphics.FromImage
- Richiamare il metodo del controllo (RichTextBox), che dice di pittura stessa:. Ed a quel metodo, passare l'istanza Graphics associato con la vostra immagine, in modo che esso si dipinge sull'immagine
Non sono sicuro se ancora in attesa di una risposta, ma non v'è soluzione molto pulita e ordinata per il vostro problema. È possibile modificare qualsiasi testo, inclusi rtl, per l'immagine in base alla loro classe CSS. Ma lasciate che vi dica prima, PHP e GD che cosa mai, non fa nulla di buono per il testo RTL. Si dovrebbe cercare di sostituzione del testo asp.net in base alla larghezza.
Una volta che ho camminato lo stesso percorso e lottato per giorni. Ecco cosa si dovrebbe fare.
Per prima cosa vai al seguente indirizzo e vedere il tutorial e scaricare i file. http://weblogs.asp.net /yaneshtyagi/archive/2008/11/07/text-to-image-convertor.aspx
In secondo luogo è necessario un server asp.net. È possibile installarlo oppure è possibile utilizzare uno di questi server virtuale, come ad esempio server di mono asp.net, oppure è possibile utilizzare sviluppatore web visual.
Il codice si otterrà converte il testo un'immagine singola linea in, anche se è possibile specificare la larghezza. In quella linea lungo caso di testo restringersi e diventa illeggibile. Quello che vi serve è quello di Testo a capo in base alla larghezza specificata.
Qui in questo link che spiega come modificare il codice in fontwriter.ashx per raggiungere avvolgere il testo. http://www.codeproject.com/Questions /189513/Dynamic-Image-Replacement-Method-with-Csharp.aspx
In terzo luogo eseguire la tua pagina tramite server asp.net. Una volta che avete le immagini è possibile salvarlo, fare clic destro e salva con nome, con Firefox, Firefox funziona migliore finora.
Ora, tutto il testo viene convertito in immagini e testo originale verrà aggiunto alla immagine come tag alt. Spero che sia d'aiuto.
Ho intenzione di inviare un tutorial sulla questione al più presto. Controllare www.codeproject.com più tardi.