imagettfbbox

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

  • imagettfbbox

    Hey,

    ich Arbeite gerade an einem Script zur Erstllung eines Wasserzeichen.
    Soweit läuft schon alles.
    Nun würde ich aber gerne die Schrift noch um 30 oder 45 Grad drehen.
    Doch dann habe ich das Problem, dass das Fenster von der Breite und Höhe
    gar nicht mehr passt.
    Hab schon mal den Versuch gemacht, und bei festen Gradangaben
    die Breite und Höhe minus der Breite und Höhe bei 0 Grad zu berechnen.
    Dabei kommt aber auch kein gutes Ergebnis raus, da ja die Buchstaben von der
    Breite unterschiedlich sind.
    Gibt es eine andere Funktion, mit der ich die Breite des Textfeldes heraus
    finden kann.
    Hier mal der Code zur neuen Berechnung der Breite:
    PHP-Code:
    if ($fontangle == "45")    {
    $textfield imagettfbbox($fontsize0$fontfile$text_neu);
    $text_size_x = (abs($textfield[6] - ($textfield[4] - 50))); ### obere linke ecke minus obere rechte ecke = bildbreite 

  • #2
    Hallo,

    warum übergibst du der Funktion 0 als Winkel und nicht den tatsächlichen Drehwinkel der Schrift? Imagettfbbox() ist darauf ausgelegt, die Bounding Box auch von gedrehtem Text zu errechnen, wenn auch nicht immer perfekt.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Danke für den Link.
      Werd ich mal testen.

      Kommentar


      • #4
        Hey,

        hab mir den Link gerade mal näher angeschaut.
        Ist ja schön und recht.
        Aber das gnze geht halt nur auf die Höhe.
        Ich bräuchte das ganze auf die Breite.
        Ich denke das wird einfach nicht machbar sein,
        das ich die richtige Breite bekomme, da einfach die
        Laufweiten der Buchstaben zu unterschiedlich sind
        und selbst die Leerzeichen zwischen den Buchstaben
        nicht immer gleich sind.
        Gibt es eine Möglichkeit, ein Bild zu erstellen und dann
        das fertige Bild zu drehen?

        Kommentar


        • #5
          Klar, die gibt es.
          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
          Super, danke!
          [/COLOR]

          Kommentar


          • #6
            Danke den Link.
            Hab ich heute früh auch gefunden.
            Werde das Problem so lösen.

            Kommentar


            • #7
              Hab das ganze nun mal ausprobiert.
              Ich erstelle ein Wasserzeichen mit Text, speichere dieses Bild dann
              ab. Danach will ich es mit imagerotate drehen.
              Doch das Ergebnis sieht recht seltsam aus, wie ihr es hier sehen könnt.
              Erst das Originalbild, dann das gedrehte:




              Hier mal der Code:
              PHP-Code:
              $text_color imagecolorallocate($new_picture$rot$gruen$blau);
              imagecolortransparent($new_picture$background_color); ### hintergrundfarbe transparent machen
              imagefill($new_picture00$background_color);
              imagettftext($new_picture$fontsize$fontangle$text_pos_x$text_pos_y$text_color$fontfile$text_neu);
              // Hintergund transparent stellen
              imagecolortransparent($new_picture$background_color);
              imagepng($new_picture"vorschau/"."wasserzeichen".".png"); ### bild auf dem server speichern

              ###############################################################################################################
              $filename 'vorschau/wasserzeichen.png';
              $degrees 10;
              // Load
              $source imagecreatefrompng($filename);
              $text_color imagecolorallocate($source255255255);
              imagecolortransparent($source$text_color);
              // Rotate
              $rotate imagerotate($source$degrees1);
              imagecolortransparent($rotate$background_color); ### hintergrundfarbe transparent machen
              imagepng($rotate"vorschau/test.png");
              imagedestroy($new_picture); ## speicherplatz wieder freigeben 
              Hoffentlich kann mir jemand helfe.
              Danke schon mal

              Kommentar


              • #8
                Hallo nochmal,

                imagecolortransparent() ist für Palettenbilder vorgesehen und unterstützt nur Indextransparenz. Für PNG solltest du Alphatransparenz benutzen und damit auf imagealphablending() und imagesavealpha() umsteigen.
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #9
                  das ganze muss ich ja dann bei der erstellung des wasserzeichens anwenden
                  und beim drehen?
                  oder sehe ich das falsch?

                  Kommentar


                  • #10
                    Zitat von in-power Beitrag anzeigen
                    das ganze muss ich ja dann bei der erstellung des wasserzeichens anwenden
                    Ja

                    Zitat von in-power Beitrag anzeigen
                    und beim drehen?
                    Ja

                    Zitat von in-power Beitrag anzeigen
                    oder sehe ich das falsch?
                    Nein

                    Ohne das jetzt getestet zu haben, glaube ich, dass du mit imagealphablending den Blend Mode ausschalten musst. Mit imagesavealpha musst du vor dem Speichern den Alphakanal zuschalten. Probier mal einfach ein bisschen damit rum und das Handbuch gibt es ja auch noch.
                    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                    Super, danke!
                    [/COLOR]

                    Kommentar

                    Lädt...
                    X