Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] txt in bildern ohne antialias !?

Einklappen

Neue Werbung 2019

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

  • [Erledigt] txt in bildern ohne antialias !?

    hallo erstmal. ich hoffe ich bin hier im richtigen forum.

    mein problem ist folgendes:

    ich erzeuge ein bild und packe da text rein.
    nur ist der text schön verschwurbelt....
    es ist wichtig das der text nicht weich gezeichnet
    wird. das muss man doch irgendwie unterbinden
    können....

    hab die imageantialias funktion gefunden...
    nur klappt es damit leider nicht.
    ebensowenig funktioniert es mit einem
    negativen farbwert in der 'imagettftext'funktion,
    wie im handbuch beschrieben.

    hier mal der code:
    Code:
    header ("Content-type: image/png");
    include('init_vars.php');
    $chars = html_entity_decode($chars);
    $width=200;
    $height=100;
    
    $im = @imagecreatetruecolor($width,$height)
          or die("Cannot Initialize new GD image stream");
    
    $black = imagecolorallocate($im, 0, 0, 0)*(-1); //negativer farbwert: für imagettftext- richtig so?
    $white = imagecolorallocate($im, 255, 255, 255);
    
    imageantialias($im, 0);
    
    ImageFilledRectangle($im,0,0,$width,$height,$white); //weißer hintergrund
    ImageTTFText($im, $size, 0, 50, 50, $black, FONT_URL.$font, $chars); //schreibe string in bild
    
    ImagePNG ($im);
    imagedestroy($im);
    ich hoffe es kann mir jemand helfen.

    danke schonmal

  • #2
    Welcher Font wird denn überhaupt benutzt ?
    Wieso negativer Farbwert ?

    Kommentar


    • #3
      Zitat von CIX88
      Welcher Font wird denn überhaupt benutzt ?
      imageTTFtext
      TTF: true type font
      es wird das c:windows/fonts verzeichnis eingelesen.
      die darstellung funktioniert auch mit allen fonts. nur
      werden diese halt weichgezeichnet.

      Zitat von CIX88
      Wieso negativer Farbwert ?
      Zitat von PHP.net: imageTTFtext,
      Col ist der Farbindex. Verwenden Sie den negativen Index-Wert, führt das zum Aufheben des Farbüberlaufs (Antialiasing).
      aber egal wie ich es mache, es bleibt ein wischiwaschi-text

      Kommentar


      • #4
        also... nicht weichgezeichneter Text funktioniert u.a. mit imagestring... Wobei man nur 5 "Fonts" zur Auswahl hat

        PHP-Code:
        <?php
        // Syntax
        int imagestring int imint fontint xint ystring sint col );
        ?>
        im: Bild-Handle, bei dir $im,
        font: Wert von 1-5, von PHP vordefinierte Schriftart
        x und y: x- bzw. y-Position der linken oberen Ecke
        s: Der auszugebende Text, bei dir $chars
        col: Farbe, bei dir $black bzw. $white, aber den negativen Farbwert kannst du dir sparen, -1*0 gibt sowieso 0

        Weiß nicht, ob dir das hilft... Du hast eben keine große Auswahl an Fonts und wenn du fortgeschritten bist, müsstest du das eigentlich kennen...

        __________________________

        EDIT: Vergiss das alles: lass das *(-1) in
        PHP-Code:
        <?php
        $black 
        imagecolorallocate($im000)*(-1);
        ?>
        weg und setze dafür bei imagettftext ein Minus vor das $black, also so:

        PHP-Code:
        <?php
        ImageTTFText
        ($im$size05050, -$blackFONT_URL.$font$chars);
        ?>
        Der beste Platz für Politiker ist das Wahlplakat. Dort ist er tragbar, geräuschlos und leicht zu entfernen.*– Loriot

        Kommentar


        • #5
          CIX88 hat Folgendes geschrieben:
          Welcher Font wird denn überhaupt benutzt ?

          imageTTFtext
          TTF: true type font
          Leider falsche Antwort
          Welcher Font = Welche Schriftart wird benutzt ?

          Dass du ImageTTFText() benutzt sehe ich selber oben im Quellcode

          Kommentar


          • #6
            hallo,
            und erstmal danke für die antworten!

            Zitat von pb
            also... nicht weichgezeichneter Text funktioniert u.a. mit imagestring... Wobei man nur 5 "Fonts" zur Auswahl hat

            PHP-Code:
            <?php
            // Syntax
            int imagestring int imint fontint xint ystring sint col );
            ?>
            im: Bild-Handle, bei dir $im,
            font: Wert von 1-5, von PHP vordefinierte Schriftart
            x und y: x- bzw. y-Position der linken oberen Ecke
            s: Der auszugebende Text, bei dir $chars
            col: Farbe, bei dir $black bzw. $white, aber den negativen Farbwert kannst du dir sparen, -1*0 gibt sowieso 0

            Weiß nicht, ob dir das hilft... Du hast eben keine große Auswahl an Fonts und wenn du fortgeschritten bist, müsstest du das eigentlich kennen...
            selbstverständlich kenne ich die aber hilft mir nicht weiter die funktion,
            weil man eben nur 5 schriftarten zur verfügung hat.
            es geht darum, das man sich eine der installierten typen aussuchen soll.

            Zitat von pb
            __________________________

            EDIT: Vergiss das alles: lass das *(-1) in
            PHP-Code:
            <?php
            $black 
            imagecolorallocate($im000)*(-1);
            ?>
            weg und setze dafür bei imagettftext ein Minus vor das $black, also so:

            PHP-Code:
            <?php
            ImageTTFText
            ($im$size05050, -$blackFONT_URL.$font$chars);
            ?>
            hast du das ausprobiert? also ich hatte die variante auch schon ganz
            zuerst, weil es mir am logischsten erschien, kommt aber aufs gleiche
            raus- klappt nicht.

            Leider falsche Antwort
            Welcher Font = Welche Schriftart wird benutzt ?

            Dass du ImageTTFText() benutzt sehe ich selber oben im Quellcode
            ich meinte damit es sollen alle installierten ttfs möglich sein

            ---

            also irgendwie komme ich mit den funktionen auf keinen grünen zweig.
            ich habe mir überlegt man könnte ja auch den farbwert jedes einzelnen
            pixels auslesen. bei einem wert >= 808080hex wird das pixel schwarz
            andernfalls weiß. ist nur fraglich ob die einwandfrei korrekte darstellung
            des zeichens dann noch gewährleistet ist.
            ich hoffe ja es lässt sich anders lösen....

            Kommentar


            • #7
              nur ist der text schön verschwurbelt....
              Leider kann ich dir auch nicht helfen, da »verschwurbelt« mir leider nichts sagt.
              Ein Beispielbild ist für mich aussagekräftiger

              ich meinte damit es sollen alle installierten ttfs möglich sein
              Leider sind nicht alle TTFs für grafische Spielerein innerhalb der GDlib geeignet.

              Ansonsten vieleicht noch ein Beispiel:
              http://www.cix88.de/cix_php/tonne/text_in_grafik.php

              Kommentar


              • #8
                bei ttf funtionen denke ich schon das alles unterstützt wird.
                ich lese ja wie gesagt das font verzeichnis aus. dann kann man in ner
                dropdown box eine schriftart auswählen. es werden soweit auch alle dargestellt. nur eben verschwurbelt
                zum thema 'verschwurbelt':

                rechts verschwurbelt/weichgezeichnet- so sieht es momentan aus
                so wie links soll es aussehen

                Kommentar


                • #9
                  Achso,

                  also »verschwubelt« = Antialias
                  Mal abgesehen davon, dass es ohne Antialias (also im Beispiel links) echt blöd ausssieht, könnte man das erstmal verhindern, indem man sogenannte Pixelschriften benutzt.

                  Sowas wie hier mit runden Serifen ist natürlich mist.
                  Muss ich erstmal selber gucken, wie man das noch umgehen könnte.

                  Zur Not könnte man alle Pixel rausnehmen die einen gewissen Farbwert unterschreiten, sodass dann nur noch z.B. Schwarz übrig bleibt.
                  Dann wird es (theoretisch) so wie im linken Beispiel.
                  Aber !
                  Das ganze ist dann sehr Rechenintensiv und die Auslastung vom Server steigt, weil hierzu das Bild pixelweise abgestatet werden müsste.
                  Keine Ahnung ob ich jetzt verstanden worden bin.

                  Kommentar


                  • #10
                    Meine Fresse ...

                    ich glaube das dürfte es sein:
                    http://www.cix88.de/cix_php/tonne/te..._ohne_anti.php

                    Am Ende der Bilderstellung folgt noch ein:
                    ImageTrueColortoPalette ( $im, 1, 2 );

                    Damit wird die Farbpalette auf 2 Farben gesetzt, wodurch dann die anderen Farbpixel bei der Schrift verschwinden.
                    Da sich diese Funktion auf TrueColor bezieht, muss das Bild auch als TrueColor-Bild erstellt werden - logisch.

                    Aber !

                    Das geht jetzt nur mit der Schrift.
                    Ist hier noch ein Bild oder Grafik drin, wird auch diese auf 2 Farbe gesetzt.
                    Einfacher Trick, aber es sollte helfen.

                    Kommentar


                    • #11
                      Zitat von CIX88
                      Achso,

                      also »verschwubelt« = Antialias
                      Mal abgesehen davon, dass es ohne Antialias (also im Beispiel links) echt
                      blöd ausssieht, könnte man das erstmal verhindern, indem man
                      sogenannte Pixelschriften benutzt.
                      schriftarten sind _alle_ genrell wie vektoren. d.h. theoretisch unendlich
                      skalierbar. und die die GD lib macht doch keinen unterschied nach dem
                      motto; oh eine pixelschrift, na dann mal kein antialias es wird _jede_
                      schriftart verschwurbelt.
                      das es nicht so gut aussieht ist total irrelevant, da die bilddatei für ein
                      2farbiges lcd display eingesetzt werden soll.

                      Zitat von CIX88
                      Sowas wie hier mit runden Serifen ist natürlich mist.
                      Muss ich erstmal selber gucken, wie man das noch umgehen könnte.

                      Zur Not könnte man alle Pixel rausnehmen die einen gewissen Farbwert
                      unterschreiten, sodass dann nur noch z.B. Schwarz übrig bleibt.
                      Dann wird es (theoretisch) so wie im linken Beispiel.
                      Aber !
                      Das ganze ist dann sehr Rechenintensiv und die Auslastung vom Server
                      steigt, weil hierzu das Bild pixelweise abgestatet werden müsste.
                      Keine Ahnung ob ich jetzt verstanden worden bin.
                      natürlich habe ich das verstanden. das gleiche hab ich doch nen beitrag voher geschrieben
                      und die preformance ist erstmal nebensächlich wenn es nicht zuuu lange dauert.

                      Kommentar


                      • #12
                        Schau nochmal bitte auf meinen letzten Beitrag:
                        http://www.phpfriend.de/forum/ftopic51090.html

                        Kommentar


                        • #13
                          Zitat von CIX88
                          Schau nochmal bitte auf meinen letzten Beitrag:
                          http://www.phpfriend.de/forum/ftopic51090.html
                          ja hammergeil!!

                          gar nicht gesehen. haben sich wohl unsere antworten überschnitten

                          aber jucheee²! das sieht sehr gut aus!!! genau das brauche ich... bilder
                          kommen da eh nicht rein... von daher- perfekt!

                          tausend dank für deine mühe!

                          Kommentar


                          • #14
                            Sieht doch richtig cool aus ...

                            http://www.cix88.de/cix_php/tonne/text_lcd_display.php

                            Kommentar


                            • #15
                              Zitat von CIX88
                              hehe danke aber ein display brauch ich ja gar nicht zu simulieren. der text
                              wird ja quasi in echt drauf ausgegeben und somit unter realen bedingungen
                              'gedotted'

                              aber echt super das das doch noch so easy klappt!

                              Kommentar

                              Lädt...
                              X