Ankündigung

Einklappen
Keine Ankündigung bisher.

gd-libary - ImageString

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • gd-libary - ImageString

    Hallo Leute,

    ich hab ein Problem mit ImageString. Und zwar übergeb ich per Umgebungsvariable einen String mit Zeilenumbrüchen - diese werden aber im Image nicht umgesetzt, also alles in einer Zeile.

    Jetzt hab ich beim rumsuchen einen anderen Beitrag gefunden in dem das irgendwie so gelöst wurde dass der String Zeile für Zeile in das Bild geschrieben wurde.

    Ist das wirklich die einzige Lösung? Ich habs jetzt auch schon probiert, aber irgendwelche unrealistischen Probleme

    Hier mal noch der gesamte "image-code", wie er momentan - incl. der Sache mit den Zeilen einzeln die ich gefunden habe - aussieht:

    Code:
    <?
    header("Content-type: image/png"); 
    $image = ImageCreateFromJPEG('etiketten/'.$bild);
    $image2 = ImageCreateFromJPEG('etiketten/'.$bspbild);
    ImageCopy($image,$image2,$offx,$offy,0,0,100,100);
    $textcolor = ImageColorAllocate($image,200,00,00);
    
    // den Text nach Zeilenumbruch aufteilen
    $zeilen = explode("\n",$bsptext);
    
    $font_size = 4;
    $zeilen_hoehe = $font_size * ($font_size * 0.875);
    
    //$wort_array jetzt auslesen
    $i=0;
    foreach($zeilen as $zeile) {
    	$i++;
    	$step = $zeilen_hoehe * $i;
    	ImageString($image,$font_size,0,$step,$zeile,$textcolor);
    } 
    ImagePNG($image);
    ?>
    Ja, ich hoffe ihr lacht mich nich aus weil ich in meiner Übermüdung irgendwas total lächerliches übersehen hab, und ich hoffe noch mehr das ihr eine Lösung wisst die einfach den String mit Zeilenumbrüchen in das verdammte Bild schreibt

    Danke schonmal

    Andi

  • #2
    Ist das wirklich die einzige Lösung?
    Hab auch noch keine andere (effektive) Lösung gefunden.
    Es sind nunmal Grafik-Funktionen, keine Textverarbeitung

    Der Wert mit 0.875 ist rein experimentell entstanden

    Kommentar


    • #3
      Okay danke

      Hast du ne Idee warum das bei mir nich geht?

      Kommentar


      • #4
        Was ist an dieser Lösung so schlecht?

        Kommentar


        • #5
          Wenn dir die Grafik überhaupt nicht angezeigt wird, lass den header()-Aufruf am Anfang weg, rufe dann die Datei auf und schau nach, welche Fehlermeldung du bekommst.

          Kommentar


          • #6
            Nein, die Grafik wird bei mir schon angezeigt. Wenn ichs mir recht überlege scheint er leere Zeilen zu ignorieren, obwohl sie in dem array "zeilen" alle drin sind, und obwohl auch die foreach Schleife mehrfach durchlaufen wird. Es steht trotzdem immer aller Text in einer Zeile

            Muss eigentlich irgendein blöder Fehler sein...

            @Zerg

            Ob die Lösung schlecht ist wird sich noch zeigen, sie muss halt für unterschiedliche Schriftarten und Schriftgrößen funktionieren... Aber falls sie das nicht tut bau ich einfach einen Regler zum nachstellen ein

            Kommentar


            • #7
              Ich hatte das auch nur so bisher gelöst:

              http://www.cix88.de/cix_php/php_graf...textzeilen.php

              Kommentar


              • #8
                Hm, ja... genau von dir hab ich diesen Script ja, nur dass ich die Zeilenumbrüche schon im string drin hab und nicht alle x-Zeichen umbreche.

                Jetzt ist nur die Frage warum es nicht geht... wenn ich in der foreach schleife

                echo $zeile.'
                ';

                schreibe, gibt er mir ( wenn ich mir das image direkt anschaue ) auch wirklich zeile für zeile mit
                aus...

                Beim Text im Bild allerdings nicht... und ich weiß nicht warum - mein einziger Ansatz war dass er lehre Zeilen vielleicht ignoriert ( wo 2 Zeilenumbrüche direkt hintereinander waren ), aber auch wenn ich an $zeile noch etwas anhänge scheint er sie einfach nicht ins bild zu schreiben... so ist $zeilen[3], in der der erste Text steht, auch ganz oben im Bild

                Kommentar


                • #9
                  Ich werd bald verrückt... Wenn ich in der foreach schleife $step ausgebe sehe ich wie $step wunderschön sich jedes mal um die zeilenhöhe erhöht, und trotzdem ist aller Text, egal in welchem Durchlauf er geschrieben wird, in einer Zeile.......

                  Kommentar


                  • #10
                    Hmmm, hab dein Script mal selber probiert (etwas verändert):

                    PHP-Code:
                    <?php
                    error_reporting
                    (E_ALL);

                    $bsptext file_get_contents('robots.txt');

                    $image ImageCreateFromPNG('test.png'); 
                    $textcolor ImageColorAllocate($image,200,00,00); 

                    // den Text nach Zeilenumbruch aufteilen 
                    $zeilen split("(\r|\n|\r\n)"$bsptext); 

                    $font_size 4
                    $zeilen_hoehe $font_size * ($font_size 0.875); 

                    //$wort_array jetzt auslesen 
                    $i=0
                    foreach(
                    $zeilen as $zeile) { 
                       
                    $i++; 
                       
                    $step $zeilen_hoehe $i
                       
                    ImageString($image,$font_size,0,$step,$zeile,$textcolor); 

                    ImagePNG($image'$$$.png'); 
                    echo 
                    '[img]$$$.png[/img]';

                    ?>
                    ... und geht wunderbar, jedenfalls bei mir.
                    Noch etwas vergessen ?

                    Kommentar


                    • #11
                      Danke auf jedenfall

                      Ich hab parallel dazu auch noch mal in der einbindenden Datei die $bsptext urlencoded - und auf jedenfall gehts jetzt.

                      Kommentar

                      Lädt...
                      X