PHP PNG-Alpha Wasserzeichen mit Schatten

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

  • PHP PNG-Alpha Wasserzeichen mit Schatten

    Hallo,
    ich habe folgendes Problem.
    Ich habe ein Bilder uploadscript geschrieben wo automatisch ein Wasserzeichen in die untere rechte Ecke des hochgeladenen Bildes eingebunden wird. Das Wasserzeichen ist ein .png Bild das ich auch eingebunden bekommen, allerdings wird die .png komplett ohne Transparenz gespeichert =/.

    Banner vor dem hochladen: http://edmolf.xemedia.de/banner.jpg
    Wasserzeichen: http://edmolf.xemedia.de/sgm_copyright.png
    Banner nach dem hochladen: http://edmolf.xemedia.de/banner2.jpg

    Hier noch der Code für die Wasserzeichen generierung den ich benutze:

    PHP-Code:

    $img_size 
    getimagesize('../images/gallery/'.$image);
    $width $img_size[0];
    $height $img_size[1];

    header('Content-type: image/jpeg');

    $old_picture imagecreatefromjpeg('../images/gallery/'.$image);
    $new_picture imagecreatetruecolor($width$height);

    imagecopyresampled($new_picture$old_picture0000$width$height$width$height);

    $transition 100;
    $watermarkfile imagecreatefrompng('../images/sgm_copyright.png');
    $waternarkpic_width imagesx($watermarkfile);
    $waternarkpic_height imagesy($watermarkfile);
    $watermarkdest_x $img_size[0] - $waternarkpic_width 10;
    $watermarkdest_y $img_size[1] - $waternarkpic_height 10;
    imagecopymerge($new_picture$watermarkfile$watermarkdest_x$watermarkdest_y00$waternarkpic_width$waternarkpic_height$transition);

    imagejpeg($new_picture,'../images/gallery/'.$image200);
    imagedestroy ($new_picture); 
    Gibt es eine Möglichkeit die Transparenz der .png weiterhin beizubehalten falls das nicht geht immerhin eine Farbe zu definieren die Transparent dargestellt werden soll ?

    Edit:

    Die Befehle imageAlphaBlending und imageSaveAlpha habe ich mir auch schon angeschaut, aber ich bin damit bisher immer zum dem gleichen Resultat gekommen welches in banner2.jpg zu sehen ist.

    Gruß
    EdMolf
    Zuletzt geändert von EdMolf; 01.11.2007, 12:49.

  • #2
    Imagecolortransparent?

    Kommentar


    • #3
      Hey,
      an sich ist der Befehl ja schön und gut aber er hilft mir trotzdem noch nicht bei meinem Problem weiter. Ich habe sgm_copyright.png in Photoshop erstellt und den Hintergrund dabei transparent gelassen. Dann habe ich das ganze als .png abgespeichert sprich ich weis nicht welche Farbe als Hintergrundfarbe definiert ist. Wenn ich den Befehel den du gepostet hast richtig verstehe dann macht er ausserdem nur eine bestimmte festgelegte Farbe durchsichtig, aber dann kann ich ja meine Schatten in der Schrift vergessen weil da ja ein Übergang zwischen der Hintergrundfarbe und der Schrift an sich ist.

      Ich habe trotzdem einfach mal versucht mit dem Befehl den Hintergrund transparent zu machen, aber entweder habe ich den Befehl falsch verstanden und angewendet oder der Befehl ist wie ich oben schon erläutert habe nicht für mein Problem zu gebrauchen.

      PHP-Code:

      $alpha 
      imagecolorallocate($watermarkfile255,255,255);
      imagecolortransparent ($watermarkfile$alpha); 
      Gruß
      EdMolf
      Zuletzt geändert von EdMolf; 01.11.2007, 13:49.

      Kommentar


      • #4
        Merke: Bei den GD-Funktionen gilt: Fast jedes Problem ist schon mal aufgetaucht, und ist in den User Contributed Notes zu den einzelnen Funktionen zu finden.
        Hier ist z.B. ein Skript, das (angeblich) das tut, was Du brauchst. Vergleichen oder übernehmen. Nicht getestet, keine Gewähr:
        http://de2.php.net/manual/de/functio...erge.php#53100

        EDIT:

        Der Schlüssel ist offenbar imagecopy() statt imagecopymerge().

        Kommentar


        • #5
          Hi,
          danke für die schnelle Antwort. Mit imagecopy() funktionert es einwandfrei. Hier nochmal der komplette und jetzt auch funktionierende Code:

          PHP-Code:

          $img_size 
          getimagesize('../images/gallery/'.$image);
          $width $img_size[0];
          $height $img_size[1];

          header('Content-type: image/jpeg');

          $old_picture imagecreatefromjpeg('../images/gallery/'.$image);
          $new_picture imagecreatetruecolor($width$height);

          imagecopyresampled($new_picture$old_picture0000$width$height$width$height);

          $watermarkfile imagecreatefrompng('../images/sgm_copyright.png');

          $alpha imagecolorallocate($watermarkfile255,255,255);
          imagecolortransparent ($watermarkfile$alpha);

          $waternarkpic_width imagesx($watermarkfile);
          $waternarkpic_height imagesy($watermarkfile);
          $watermarkdest_x $img_size[0] - $waternarkpic_width 10;
          $watermarkdest_y $img_size[1] - $waternarkpic_height 10;

          imagecopy($new_picture$watermarkfile$watermarkdest_x$watermarkdest_y00$waternarkpic_width$waternarkpic_height);
          imagejpeg($new_picture,'../images/gallery/'.$image200);

          imagedestroy ($new_picture); 
          Gruß
          EdMolf

          Kommentar

          Lädt...
          X