Paul: colorObject

Moin.
Mit imagerotate() drehe ich ein Bild. Die Ecken sollen transparent angezeigt werden.

In
http://www.php.net/manual/de/function.imagerotate.php
gibt es bgd_color. Da komm ich aber nicht ganz hinter. Wie bekomme ich die durch das Drehen entstandene Ecken transparent???

Paul

  1. (Hallo|Hi(ho)|Tag) Paul,

    Moin.
    Mit imagerotate() drehe ich ein Bild. Die Ecken sollen transparent angezeigt werden.

    In
    http://www.php.net/manual/de/function.imagerotate.php
    gibt es bgd_color. Da komm ich aber nicht ganz hinter. Wie bekomme ich die durch das Drehen entstandene Ecken transparent???

    Die in den GD-Funktionen üblicherweise benutzten Parameter für Farbwerte holt man sich mit imageColorAllocate(). Um nun als Farbwert "transparent" anzugeben, kannst du die Konstante IMG_COLOR_TRANSPARENT als Parameter benutzen.

    MffG
    EisFuX

    1. Hallo EisFuX,
      vielen Dank für Deine Antwort.

      Ich habs jetzt so versucht:

      $img = imagecreatefrompng($imgPath.'nordpfeil.png');
      $white = imagecolorallocate($img ,255,255,255);
      $colorTransparent = imagecolortransparent($img , $white);
      $rotate = imagerotate($img , $rotation, $colorTransparent);
      imagepng($rotate, $imgPath.'nordpfeil_neu.png');

      Leider wird der Hintergund weiss und nicht transparent :-(
      Kannst Du mir noch ein wenig weiter helfen?

      Paul

      1. (Hallo|Hi(ho)|Tag) Paul,

        $img = imagecreatefrompng($imgPath.'nordpfeil.png');
        $white = imagecolorallocate($img ,255,255,255);
        $colorTransparent = imagecolortransparent($img , $white);
        $rotate = imagerotate($img , $rotation, $colorTransparent);
        imagepng($rotate, $imgPath.'nordpfeil_neu.png');

        Probiers doch mal so:

          
        $img = imagecreatefrompng($imgPath.'nordpfeil.png');  
        $rotate = imagerotate($img , $rotation, IMG_COLOR_TRANSPARENT);  
        imagepng($rotate, $imgPath.'nordpfeil_neu.png');  
        
        

        Leider wird der Hintergund weiss und nicht transparent :-(

        Nun, wenn man der PHP-Handbuchseite zu imageColorTransparent() trauen kann, dann wird der Hintergrund in deinem Script weiß _und_ transparent. ;-)

        So gesehen, hast du zwar erreicht, was du wolltest, aber da die transparenten Pixel in weiß dargestellt werden, sieht man das Ergebnis nicht.

        Du kannst das Bild aber probeweise mal in eine HTML-Datei mit andersfarbigen Hintergrund (als weiß) einbinden und dann in einem PNG-mit-Alphakanal-fähigen Browser ansehen. Dort müsste der Unterschied zu sehen sein ...

        MffG
        EisFuX