[gelöst] GD-Bildtransparenz nach imagecopymerge

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

  • [gelöst] GD-Bildtransparenz nach imagecopymerge

    Vorabinfos:
    -PHP Version 5.3.0
    -GD-Version: bundled (2.0.34 compatible)


    Also ich habe folgendes Problem.
    Ich möchte mir mit Hilfe der GD-Lib unter PHP einen Button erstellen lassen.
    Der Button soll z.B. so aussehen:
    http://cls.bplaced.net/bild.png

    Nun habe ich mit PS zwei Bilder erstellt:
    1.der Buttonrohling:

    http://cls.bplaced.net/roh.png
    (Achtung es ist ein weisser Buttton mit transparentem Hintergrund, man sieht ihn also nur wenn man ihn makiert und versucht zu verschieben)

    2.der Effekt:

    http://cls.bplaced.net/effekte.png

    Soweit so gut.
    Nun möchte ich des Button rot einfärben, das funzt auch, danach mithilfe von imagecopymerge() den Effekt über den Button legen.
    Auch das funktioniert, doch sieht es nicht schön aus, egal welchen Wert ich bei imagecopymerge() bei der transparenz angebe.

    Hier mal der Code:

    PHP-Code:
    header ("Content-type: image/png");
    $roh imagecreatefrompng("roh.png");
    $color imagecolorallocate($roh25500);
    $effect imagecreatefrompng("effekte.png");

    imagesavealpha($effecttrue);
    imagesavealpha($rohtrue);

    imagefill ($roh2020$color);

    imagecopymerge($roh,$effect0000150150,50);

    imagepng($roh); 
    Hier das Ergebniss:
    http://cls.bplaced.net/change2.php

    Das sieht doch net schön aus.

    Danke schonmal für eure Hinweise.

  • #2
    Hallo,

    hast du es schon mal imagealphablending probiert?

    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
      Hallo,

      ja in allen Variationen, also entweder nur eines der Bilder oder beide, mit true und false im wechsel.
      Verändert leider das Ergebniss in keinster Weise.


      Danke

      Lg

      Kommentar


      • #4
        Passiert dieses ungewollte Verhalten sicher erst nach imagecopymerge und nicht schon bei imagefill? Ansonsten wäre imagefilter mit IMG_FILTER_COLORIZE noch eine Ausweichvariante.

        Deine Idee der Nachcoloration einer reinen Maske finde ich ja gut, aber ohne Alphablending nimmt GD ja die premultiplied Werte, was imho gar nicht funktionieren kann, bzw. genau so aussieht, wie das was bei dir rauskommt. Wenn du es aber schon mit Alphablending versucht hast und es da auch nicht ging, dann weiß ich glaub ich auch nicht weiter.

        Jedenfalls solltest du nach jedem Schritt das Bild mal in einer neuen Datei speichern und mit deinem PS die Änderungen ganz genau analysieren.
        [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


        • #5
          Problem behoben:
          PHP-Code:
          <?php
          header 
          ("Content-type: image/png");
          //Rohbutton
          $roh imagecreatefrompng("roh.png");
          //Farbe des Button
          $color=imagecolorallocate($roh0100255);
          //Effekt des Button
          $effect imagecreatefrompng("effekte.png");
          //Hilfesbild um Truecolorbild mit Alphakanal zu bekommen
          $helppic=imagecreatetruecolor(150,25);

          imagealphablending($effectfalse);
          imagesavealpha($effecttrue);

          imagealphablending($rohtrue);
          imagesavealpha($rohtrue);

          imagealphablending($helppicfalse);
          imagesavealpha($helppictrue);

          //Rohbutton mit Farbe fülle
          imagefill($roh,20,20,$color);

          //Effekt ins Truecolorbild kopieren
          imagecopyresampled($helppic,$effect,0,0,0,0150,150,150,150);


          //Truecoloreffekt Bild über den gefärbten Rohbutton legen
          imagecopyresampled($roh,$helppic0000150150,150,150);

          //Bild erstellen
          imagepng($roh);
          ?>
          Zuletzt geändert von Pums; 29.10.2009, 13:18.

          Kommentar

          Lädt...
          X