4 Stimmen

Arabischen Text als Bilder exportieren

Ich habe eine Reihe von Zeilen mit arabischem Text in UTF-8. Das Gerät, das ich versuche, diesen anzuzeigen, unterstützt keine arabischen Text angezeigt werden. Daher muss ich den Text in Bilder konvertieren.

Ich möchte jede Textzeile als Bild mit einer bestimmten Breite speichern. Außerdem muss ich eine bestimmte Schriftart verwenden. Wie kann ich das am besten bewerkstelligen? Kennt jemand ein Tool, das hier hilfreich sein kann?

Probleme, auf die ich bisher gestoßen bin:

PHP + GD: Arabische Buchstaben erscheinen getrennt und nicht kursiv wie sie sollten. VB.net: Ich kann jede Textzeile in eine Richtextbox ausgeben... aber ich weiß nicht, wie ich das Bild nur dieses Steuerelements exportieren kann. Flash: keine Unterstützung für Text von rechts nach links.

0 Stimmen

Btw, es stimmt, dass Flash keine richtige Bidi-Unterstützung hat, aber du könntest den Text immer noch selbst umkehren, damit er richtig angezeigt wird. außerdem, welche Plattform verwendest du?

0 Stimmen

Ich habe Windows, Linux und Mac zur Verfügung.

3voto

Nasser Al-Wohaibi Punkte 4369

In Bezug auf Arabisch benötigen Sie eine Bibliothek, um Umkehrzeichen/Glyphen para PHP/GD . siehe z.B. http://sourceforge.net/projects/ar-php/ oder bei http://www.ar-php.org/ .

Vergewissern Sie sich votre PHP-Datei Kodierung ist in Unicode/UTF .
z. B. > Notepad öffnen > Speichern unter > Kodierung als UTF-8:

Anwendungsbeispiel für arabische Typografie in PHP mit 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); 
?>

Ausgänge:

enter image description here

2voto

hasen Punkte 154413

Ich habe gehört, dass pango Beherrscht das arabische Layout ziemlich gut. Habe es aber nicht benutzt.

Aktualisierung:

Der Nutzen pango-view kann den Text in jede Sprache und gibt sie als Bild aus

$ pango-view input_file.txt --no-display --output=image.png

oder Sie können den Text auch als Option angeben:

$ pango-view --no-display --output=image.png --text="your sentence"

Sie können auch eine Breite angeben:

--width=50 -wrap=word

<< Ende der Aktualisierung

Alternativ dazu gibt es einige Programme, die Unicode-Zeichen verwenden, die kontextabhängige arabische Buchstabenformen darstellen und den Text so verarbeiten, dass er auf Systemen, die arabischen Text nicht richtig darstellen können, korrekt wiedergegeben wird.

Hier sind die, die mir bekannt sind:

Sie sind alle Open Source, d. h. auch wenn Sie keine dieser Sprachen verwenden, können Sie den Code studieren und eine Lösung in der Programmiersprache Ihrer Wahl erstellen.

1voto

ChrisW Punkte 53239

Es gibt viele Möglichkeiten; mit Windows.Forms zum Beispiel, denke ich:

  • Erstellen Sie eine leere Image-Instanz; ich denke, dass Sie an dieser Stelle die Abmessungen des Bildes festlegen
  • Erstellen einer Grafikinstanz aus dem Bild mit der Methode Graphics.FromImage
  • Rufen Sie die Methode des Steuerelements (die RichTextBox) auf, die ihm sagt, dass es sich selbst malen soll: und übergeben Sie an diese Methode die Grafikinstanz, die mit Ihrem Bild verknüpft ist, so dass es sich selbst auf das Bild malt.

1voto

testere Punkte 121

Ich bin mir nicht sicher, ob Sie noch auf eine Antwort warten, aber es gibt eine sehr saubere und ordentliche Lösung für Ihr Problem. Sie können jeden Text, einschließlich rtl, in ein Bild ändern, das auf seiner CSS-Klasse basiert. Aber lassen Sie mich Ihnen zuerst sagen, PHP und GD was auch immer, tut nichts Gutes für rtl Text. Sie sollten asp.net Textersetzung basierend auf der Breite versuchen.

Einmal bin ich denselben Weg gegangen und habe mich tagelang gequält. Hier ist, was Sie tun sollten.

Rufen Sie zunächst die folgende Adresse auf, sehen Sie sich die Anleitung an und laden Sie die Dateien herunter. http://weblogs.asp.net/yaneshtyagi/archive/2008/11/07/text-to-image-convertor.aspx

Zweitens benötigen Sie einen asp.net-Server. Sie können es installieren oder Sie können einen dieser virtuellen Server, wie mono asp.net Server verwenden, oder Sie können Visual Web Developer verwenden.

Der Code, den Sie erhalten, wandelt den Text in ein einzeiliges Bild um, obwohl Sie die Breite angeben können. In diesem Fall schrumpfen lange Textzeilen und werden unlesbar. Was Sie brauchen, ist ein Textumbruch basierend auf der angegebenen Breite.

Hier in diesem Link wird erklärt, wie man den Code in fontwriter.ashx ändert, um einen Textumbruch zu erreichen. http://www.codeproject.com/Questions/189513/Dynamic-Image-Replacement-Method-with-Csharp.aspx

Drittens führen Sie Ihre Seite über den Asp.net-Server aus. Sobald Sie die Bilder können Sie es speichern, Rechtsklick und speichern unter, mit Firefox, Firefox funktioniert am besten so weit.

Jetzt wird der gesamte Text in Bilder umgewandelt, und der ursprüngliche Text wird dem Bild hinzugefügt als alt Tag. Ich hoffe, es hilft.

Ich plane, in Kürze einen Lehrgang zu diesem Thema zu veröffentlichen. Besuchen Sie www.codeproject.com später.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X