Ankündigung

Einklappen
Keine Ankündigung bisher.

Zwei PNG Bilder ineinander kopieren - Transparentprobleme

Einklappen

Neue Werbung 2019

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

  • Zwei PNG Bilder ineinander kopieren - Transparentprobleme

    Hallo zusammen,

    ich möchte vorhandene Produktbilder im PNG-Format mit freigestelltem Hintergrund skalieren und dann mit einer vorgegebenen Hintergrundfarbe wieder abspeichern. Ich habe dazu aktuell folgenden Code:

    PHP-Code:
                   //erzeuge leeres Bild mit Hintergrundfarbe
                    
    $im = @imagecreate(7070)
                        or die(
    "Kann keinen neuen GD-Bild-Stream erzeugen");
                    
    $background_color imagecolorallocate($im150150150);
                    
    imagepng($im$uploadfile);
                    
                    
    //Original laden
                    
    $source_img imagecreatefrompng($sourcefile);
                    
    ImageAlphaBlending($source_img,true);
                    
    ImageSaveAlpha($source_img,true);
                    
                    
    //Lade Hintergrundbild
                    
    $dest_img imagecreatefrompng($uploadfile);
                    
    ImageAlphaBlending($dest_img,true);
                    
    ImageSaveAlpha($dest_img,true);
                     
                    
    imagecopyresized($dest_img$source_img00005050$intranet_width$intranet_height);
                    
    imagepng($dest_img$uploadfile); 
    Es wird ein Bilderzeugt, dass den grauen Hintergrund enthält, aber an der Stelle wo im Originalbild eine Transpsranz ist, wird diese auch in das neue Bild übernommen und damit der Hintergrund wieder unsichtbar gemacht.

    21.png(der weiße Hintergrund sollte auch grau sein)

    Ich habe auch schon versucht mit den Kombinationen von ImageAlphaBlending() und ImageSaveAlpha() zu spielen. Leider ohne Erfolg.

    Hat jemand eine Idee wo der Fehler liegt?

  • #2
    PHP-Code:
     imagecopyresized($dest_img$source_img00005050$intranet_width$intranet_height); 
    wieso steht da 50, 50 ?

    wenn du nur die hintergrund faerbe ändern willst, wieso kopierst du nichrt nicht einfach einm, das bild auf die hintergrund farbe ? #
    ->
    https://www.php.net/manual/de/functi...ecopymerge.php

    zu bild kopieren, skalieren etc gibt es sicher sdehr sehr viel hier im forum
    und nebenbei:
    https://www.php.de/forum/webentwickl...rf-hier-posten

    Kommentar


    • #3
      Das Problem liegt darin, wie du mit Alphakanälen (Transparenz) und dem Überlagern der Bilder arbeitest. Du möchtest die transparente PNG auf einen farbigen Hintergrund rendern und dabei nicht die Transparenz beibehalten, sondern vollständig durch die Hintergrundfarbe ersetzen.

      Im Moment wird der Alphakanal des Quellbildes beim Kopieren beibehalten, was zur Folge hat, dass der transparente Bereich im Zielbild wieder transparent erscheint — obwohl du vorher eine Hintergrundfarbe festgelegt hast.
      sorry, shift-taste kaputt

      Kommentar

      Lädt...
      X