Freigestelltes PNG auf Hintergrund setzen

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

  • Freigestelltes PNG auf Hintergrund setzen

    Hallo,

    wie kann ich ein freigestelltes (also teilweise transparentes) PNG auf einen Hintergrund setzen?

    Ich hatte gehofft, dass GD die im Zeichenprogramme gesetzte Transparenz selbst erkennt aber tut es wohl nicht.

    Auch damit kann ich ja nur das Motiv halbtransparent auf den Hintergrund setzen, aber es soll ja freigestellt erscheinen:

    Code:
    $bg=imagecreatefrompng("bg.png");
    				
    $vorn=imagecreatefrompng("motiv.png");
    $weiss   = ImageColorAllocate ($vorn, 255, 255, 255);
    imagecolortransparent($vorn,$weiss);
    
    imagecopymerge($bg,$vorn,0,0,0,0,1200,1600,50);
    header("Content-type: image/pjpeg");
    imagejpeg($bg,"",80);
    Irgendwelche Ideen?

    Danke,
    Truncate

  • #2
    Hallo,

    imagecolortransparent() ist nur für Indextransparenz gedacht (wie bei GIF), PNG dagegen nutzt Alphatransparenz (obwohl es auch indizierte PNGs gibt, die sich dahingehend wie GIF verhalten, aber das ist selten und relativ unsinnig). Deswegen solltest du dir imagealphablending() und imagesavealpha() mal genauer ansehen. Wenn du das freigestellte Bild also von einer weißen Fläche umgeben lassen willst, musst du den Blending Mode einschalten, damit das zu kopierende Pixel (vom freigestellten Bild) über dessen Alphakanal mit dem vorhandenen Pixel (des Hintergrundbildes) verrechnet wird.

    Vermutlich nicht wichtig für dein Anliegen und nur zur Info: Wenn du allerdings vorher den weißen Hintergrund teiltransparent machen willst, musst du zuerst den Blending Mode ausschalten, damit alle Pixel beim Füllen mit der Füllfarbe ersetzt werden, ohne dass Kanäle verrechnet werden, dann den Blending Mode wieder einschalten, dein Motiv drüberkopieren und vor dem Speichern mit imagesavealpha() angeben, dass du ein RGBA-Bild speichern willst, denn standardmäßig würde sonst beim Speichern der Alphakanal wieder verloren gehen.

    Gruß,

    Amica
    Zuletzt geändert von AmicaNoctis; 05.10.2011, 22:27.
    [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