Progblem mit Erstellen von Grafiken

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

  • Progblem mit Erstellen von Grafiken

    Hallo Zusammen.

    Ich habe nun schon recht viel in dem Forum hier herum gesucht und finde keine wirkliche Lösung

    Ich möchte mittels PHP viele Bilder erstellen lassen. Das klappt auch auf einem Webserver sehr gut.

    Auf einem anderen sieht das ganze aber sehr mies aus.

    Hier mal ein Beispiel wie es eigentlich aussehen soll:




    Nun das gleiche Script auf einem anderen Webserver:



    Die Schrift sieht sehr schlecht aus

    Hier im Forum wurde geschrieben dass es daran liegen könnte dass die GD Version 2.x nicht mehr so arbeitet wie die Version 1.x

    Daraufhin habe ich beide Versionen mal Kotrolliert. Folgendes Ergebnis:

    Server 1 wo es gut aussieht:

    PHP Version 4.4.1

    ["GD Version"]=> string(27) "bundled (2.0.28 compatible)"
    ["FreeType Support"]=> bool(true)
    ["FreeType Linkage"]=> string(13) "with freetype"
    ["T1Lib Support"]=> bool(true)
    ["GIF Read Support"]=> bool(true)
    ["GIF Create Support"]=> bool(true)
    ["JPG Support"]=> bool(true)
    ["PNG Support"]=> bool(true)
    ["WBMP Support"]=> bool(true)
    ["XBM Support"]=> bool(true)
    ["JIS-mapped Japanese Font Support"]=> bool(false)
    Server 2 wo es schlecht aussieht:

    PHP Version 4.3.10-16
    "GD Version"]=> string(13) "2.0 or higher"
    ["FreeType Support"]=> bool(true)
    ["FreeType Linkage"]=> string(13) "with freetype"
    ["T1Lib Support"]=> bool(true)
    ["GIF Read Support"]=> bool(true)
    ["GIF Create Support"]=> bool(true)
    ["JPG Support"]=> bool(true)
    ["PNG Support"]=> bool(true)
    ["WBMP Support"]=> bool(true)
    ["XBM Support"]=> bool(false)
    ["JIS-mapped Japanese Font Support"]=> bool(false)
    Hier auch mal ein Auszug aus dem Script:

    PHP-Code:
    $backgd        imagecreatefrompng($BackGroundImage);
    $tmpShield    imagecreatefrompng($GuildInfo[sshield]);
    $tmpEmblem    imagecreatefromgif($GuildInfo[semblem]);
    $tmpClassPi    imagecreatefromjpeg($Klassenbild);
    $tmpRRBild    imagecreatefromjpeg($RRBild);


    // Breiten und Höhen ermitteln
    $Bannerwidth    imagesx($backgd);
    $Bannerheight   imagesy($backgd);
    $COAwidth        imagesx($tmpShield);
    $COAheight       imagesy($tmpShield);
    $CLPICwidth      imagesx($tmpClassPic);
    $CLPICheight     imagesy($tmpClassPic);
    $RRPICwidth      imagesx($tmpRRBild);
    $RRPICheight     imagesy($tmpRRBild);


    // Grundbild erzeugen
    $im         imagecreatetruecolor($Bannerwidth$Bannerheight);


    $coa            imagecreatetruecolor($COAwidth$COAheight);
    imagecopy($coa,$tmpShield,0,0,0,0,$COAwidth,$COAheight);

    $emblempos_x     = ($COAwidth imagesx($tmpEmblem)) / 3;

    imagecopy($coa,$tmpEmblem,6,15,0,0,imagesx($tmpEmblem),imagesy($tmpEmblem));
    imagecopy($im$backgd0000$Bannerwidth$Bannerheight);
    imagecopy($im$coa,  251500$COAwidth$COAheight);
    imagecopy($im$tmpClassPic,  209500$CLPICwidth$CLPICheight);
    imagecopy($im$tmpRRBild,  2094800$RRPICwidth$RRPICheight);

    $ttfFont2     "fonts/arial.ttf";
    $FontPath2    realpath($ttfFont2);

    $txtpos_x     5;

    $Textsize     12;
    $Textsiz1     8;
    $Textsiz2     10;

    // Farbe für die Schrift bestimmen.
    $Textcol      ImageColorAllocate ($im225225225);

    // der Text hat Schatten damit er besser lesbar ist 
    // Farbe für den Schatten der Schrift bestimmen (dunkleres Grau)

    $Shadowcol    ImageColorAllocate ($im646464);

    $textY $textY $Textsiz1 10;

    imagettftext ($im$Textsize0$txtpos_x$textY+1$Shadowcol$FontPath2$CharsList[$Charpos][name]);
    imagettftext ($im$Textsize0$txtpos_x$textY$Textcol$FontPath2$CharsList[$Charpos][name]);

    imagettftext ($im$Textsiz10$txtpos_x+1$textY+26$Shadowcol$FontPath2"Level ".$CharsList[$Charpos][level]." - ".$CharsList[$Charpos][klasse]);
    imagettftext ($im$Textsiz10$txtpos_x$textY+25$Textcol$FontPath2"Level ".$CharsList[$Charpos][level]." - ".$CharsList[$Charpos][klasse] );

    imagettftext ($im$Textsiz10$txtpos_x+1$textY+40$Shadowcol$FontPath2$CharsList[$Charpos][race]." - ".$CharLA ." " .$CharRR);
    imagettftext ($im$Textsiz10$txtpos_x$textY+39$Textcol$FontPath2$CharsList[$Charpos][race]." - ".$CharLA ." " .$CharRR);

    imagettftext ($im$Textsiz20$txtpos_x$textY+65$Shadowcol$FontPath2"<".$CharGuild .">");
    imagettftext ($im$Textsiz20$txtpos_x$textY+64$Textcol$FontPath2"<".$CharGuild .">");

    imagettftext ($im$Textsiz10$txtpos_x$textY+79$Shadowcol$FontPath2$FormatedGildenRPs ."Mio. GRP - Hibernia - Gareth");
    imagettftext ($im$Textsiz10$txtpos_x$textY+79$Textcol$FontPath2$FormatedGildenRPs ."Mio. GRP - Hibernia - Gareth");

    imagettftext ($im$Textsiz10$txtpos_x+215$textY+79$Shadowcol$FontPath2$WEBURL);
    imagettftext ($im$Textsiz10$txtpos_x+215$textY+78$Textcol$FontPath2$WEBURL);

    // Header senden
    Header ("Content-type: image/jpeg");

    // Bild also *.jpg im buffer erstellen (Mit 100% Qualität)
    Imagejpeg ($im,"",100); 
    Weiß vielleicht jemand einen Rat wie ich weiter vorgehen kann?

    Ich hab es schon probiert mit einem "-" vor $Textcol also so:

    PHP-Code:
    imagettftext ($im$Textsize0$txtpos_x$textY+1, -$Shadowcol$FontPath2$CharsList[$Charpos][name]);
    imagettftext ($im$Textsize0$txtpos_x$textY, -$Textcol$FontPath2$CharsList[$Charpos][name]);

    imagettftext ($im$Textsiz10$txtpos_x+1$textY+26, -$Shadowcol$FontPath2"Level ".$CharsList[$Charpos][level]." - ".$CharsList[$Charpos][klasse]);
    imagettftext ($im$Textsiz10$txtpos_x$textY+25, -$Textcol$FontPath2"Level ".$CharsList[$Charpos][level]." - ".$CharsList[$Charpos][klasse] );

    imagettftext ($im$Textsiz10$txtpos_x+1$textY+40, -$Shadowcol$FontPath2$CharsList[$Charpos][race]." - ".$CharLA ." " .$CharRR);
    imagettftext ($im$Textsiz10$txtpos_x$textY+39, -$Textcol$FontPath2$CharsList[$Charpos][race]." - ".$CharLA ." " .$CharRR);

    imagettftext ($im$Textsiz20$txtpos_x$textY+65, -$Shadowcol$FontPath2"<".$CharGuild .">");
    imagettftext ($im$Textsiz20$txtpos_x$textY+64, -$Textcol$FontPath2"<".$CharGuild .">");

    imagettftext ($im$Textsiz10$txtpos_x$textY+79, -$Shadowcol$FontPath2$FormatedGildenRPs ."Mio. GRP - Hibernia - Gareth");
    imagettftext ($im$Textsiz10$txtpos_x$textY+79, -$Textcol$FontPath2$FormatedGildenRPs ."Mio. GRP - Hibernia - Gareth");

    imagettftext ($im$Textsiz10$txtpos_x+215$textY+79, -$Shadowcol$FontPath2$WEBURL);
    imagettftext ($im$Textsiz10$txtpos_x+215$textY+78, -$Textcol$FontPath2$WEBURL); 
    Aber das Ergebnis sieht auch nicht besser aus ... eher schlechter:



    Ich hoffe ihr könnt mir da weiter helfen. Verzweifel langsam aber sicher

    Gruss

    Torger

    P.S: Habs auch auf einem dritten Server getestet ... sieht genau so schlecht aus wie auf dem zweiten.

  • #2
    Re: Progblem mit Erstellen von Grafiken

    FreeType-Version?
    Identische Font-Datei verwendet?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Versuch doch einmal eine ander Schriftartdatei <> Arial, also z.b. eine Helvetica oder soetwas (nur zum testen).
      Evtl. benutzt er gar nicht deine angegebene Schrift, sondern eine die schon im cache des browsers vorhanden ist. (nur eine vermutung).

      Desweiteren würde ich die möglichkeiten mal eingrenzen, und zum beispiel ohne den schatten bzw, die outline zu arbeiten. Hast du mal ein anderes format versucht, also gif oder png? möglicherweise liegt es an der jpg komprimierung. Auch wenn du 100% qualität angibst wird das bild trotzdem durch die jpg routine verändert.
      [color=blue]...ich sehe was, was du nicht siehst...und das ist der QUELLTEXT![/color]

      Kommentar


      • #4
        Original geschrieben von cipolla
        Evtl. benutzt er gar nicht deine angegebene Schrift, sondern eine die schon im cache des browsers vorhanden ist. (nur eine vermutung).
        Den Server interessieren sicher keine Fonts, die im Cache eines Browser sind.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Seltsam, sieht aus wär 'Letter-Spacing' auf 0 oder sogar negativ eingestellt - kann man in der GD-Lib glaub ich gar nicht beeinflussen.

          auf Anhieb würd ich auch drauf tippen, dass es nicht 100% das gleiche Font-File ist.

          Allerdings sind mir ähnliche "Unterschiede" sogar schon bei verschiedenen Photoshop-Versionen aufgefallen.

          Bei deiner Version müsste auch imagefttext zur Verfügung stehen - evtl. damit mal versuchen - lies kurz im Manual nach, ich weiß ned genau, aber ich denke die Argumente werden in der gleichen Reihenfolge angegeben wie bei imagettftext.
          Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
          Schön - etwas Geschichte kann ja nicht schaden.
          Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

          Kommentar


          • #6
            Hallo Zusammen.

            Vielen Dank schon mal für die ganzen Antworten.

            @wahsaga

            Welche Free-Type Versionen Vorhanden sind konnte ich gerade nicht herausfinden. Kann mir da wer einen Tip geben wie ich das machen kann? Die Font-Datei ist auf beiden Servern identisch.

            @cipolla

            Die Schriftarten Datei hab ich schon gegen andere ausgetauscht. Da passiert quasi das gleiche. Kann es auch noch mal machen um es zu zeigen. Er nutzt auf jeden fall die dort angegebene.

            In ein anderes Format machen wie z.B. gif oder png werde ich gleich ausprobieren und das Ergebnis auch hier posten. Ich werde es auch mal ohne Schatten machen.

            @Quetschi

            Es ist wirklich 100% das gleiche Font-File da ich es auf beiden Server hochgeladen habe.
            Den Tip mit dem "imagefttext" habe ich ausprobiert aber leider bleibt das ergebnis das gleiche.

            Gruss

            Torger

            Kommentar


            • #7
              Original geschrieben von Torger
              Welche Free-Type Versionen Vorhanden sind konnte ich gerade nicht herausfinden. Kann mir da wer einen Tip geben wie ich das machen kann?
              phpinfo(); -> Abschnitt "gd"
              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
              Schön - etwas Geschichte kann ja nicht schaden.
              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

              Kommentar


              • #8
                Original geschrieben von Torger
                Welche Free-Type Versionen Vorhanden sind konnte ich gerade nicht herausfinden. Kann mir da wer einen Tip geben wie ich das machen kann?
                Sollte in der Ausgabe von phpinfo() ebenfalls bei der GD-Lib auftauchen.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Oki hier sind die Ausgaben von phpinfo von beiden Servern:

                  Server 1 wo es gut aussieht:

                  gd
                  GD Support enabled
                  GD Version bundled (2.0.28 compatible)
                  FreeType Support enabled
                  FreeType Linkage with freetype
                  T1Lib Support enabled
                  GIF Read Support enabled
                  GIF Create Support enabled
                  JPG Support enabled
                  PNG Support enabled
                  WBMP Support enabled
                  XBM Support enabled
                  Server 2 wo es nicht gut aussieht:

                  gd
                  GD Support enabled
                  GD Version 2.0 or higher
                  FreeType Support enabled
                  FreeType Linkage with freetype
                  T1Lib Support enabled
                  GIF Read Support enabled
                  GIF Create Support enabled
                  JPG Support enabled
                  PNG Support enabled
                  WBMP Support enabled
                  Irgendwie stehen da nur die GD Versionen. Mehr von FreeType finde ich auch nicht in der PHPINFO Ausgabe.

                  Hier noch der Nachtrag mit den anderen Formaten:

                  Ohne Schatten:


                  Als Gif:


                  Als PNG:

                  Kommentar


                  • #10
                    Schon mit den FreeType-Funktionen probiert? Die produzieren manchmal schönere Ergebnisse....

                    Kommentar


                    • #11
                      Original geschrieben von pekka
                      Schon mit den FreeType-Funktionen probiert? Die produzieren manchmal schönere Ergebnisse....
                      Hallo pekka.

                      Ja, diese Funktion hatte ich auch probiert. Quetschi hatte es weiter oben schon einmal vorgeschlagen.

                      Leider war das Ergebnis auch nicht besser. Hier einmal als Bild mit der "imagefttext" Funktion:

                      Kommentar


                      • #12
                        Ja, diese Funktion hatte ich auch probiert. Quetschi hatte es weiter oben schon einmal vorgeschlagen.
                        Ah, hatte ich übersehen.
                        Hmmmmmm.... Ich hab das Problem auch schon öfter erlebt, und da bei Shared-Hosting-Angeboten selten ein GD- oder Freetype-Update möglich ist, ist man dann darauf ausgewichen, daß die Bilder von einem Referenzserver aus produziert werden, bei dem "gute" Versionen installiert sind. Produziert bei häufig aktualisierten Inhalten (wie bei Dir der Fall) halt eine Menge Traffic. Wobei ich in Deinem Fall eigentlich nichts sehe, was nicht auch via HTML-Text lösbar wäre?

                        Kommentar


                        • #13
                          Original geschrieben von pekka
                          Ah, hatte ich übersehen.
                          Hmmmmmm.... Ich hab das Problem auch schon öfter erlebt, und da bei Shared-Hosting-Angeboten selten ein GD- oder Freetype-Update möglich ist, ist man dann darauf ausgewichen, daß die Bilder von einem Referenzserver aus produziert werden, bei dem "gute" Versionen installiert sind. Produziert bei häufig aktualisierten Inhalten (wie bei Dir der Fall) halt eine Menge Traffic. Wobei ich in Deinem Fall eigentlich nichts sehe, was nicht auch via HTML-Text lösbar wäre?
                          Also auf dem Server wo es schlecht ausschaut kann man sicherlich was Ändern an den Konfigurationen oder sonst was. Die Möglichkeiten würden bestehen.

                          Was die beiden anderen Vorschläge angeht:

                          Auf einem anderen Server diese "Signatur"-Files anzulegen und dann auf den anderen Server transferieren ist eine eher schlechte Lösung die auch so unmöglich ist da es a) mit dem Traffik nicht aussreichen würde und b) der Plattenplatz auch viel zu gering wäre.

                          Und mit HTML ist das so auch nicht möglich

                          Es werden ein paar tausend von diesen Bildchen genereiert und auch nicht alle gleich aussehend sondern immer unterschiedlich.

                          Die Daten die auf den Bildern zu sehen sind werden aus XML Dateien ausgelesen die ca. alle 3 Stunden aktualisiert werden. Hier mal ein paar Beispiel Bildchen:







                          Leider ist halt der Text auf allen nicht gut wie er sein sollte

                          Kommentar


                          • #14
                            Hmm hat vielleicht noch irgendwer ein paar Tips?

                            War schon am überlegen auf PHP5 upzudaten aber irgendwie kann das doch nicht der richtige Weg sein. Besonders weil ich nicht weiß obs damit dann am Ende besser aussieht.

                            Gruss

                            Torger

                            Kommentar


                            • #15
                              auf ImageMagick umsteigen falls vorhanden

                              hab das aber auch noch nie hergenommen und Bilder mit Text zu versehen, also keine Ahnung ob das bessere Resultate liefern würde - entsprechende Funktionalitäten stellt ImageMagick aber bereit.
                              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                              Schön - etwas Geschichte kann ja nicht schaden.
                              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                              Kommentar

                              Lädt...
                              X