Ich weiss, dass es das Thema bereits gab, doch trotz googeln, PHP Manual und den Threads hier konnte ich bislang keine Lösung für mein Problem finden.
Dabei geht es wie bereits gesagt um die Transparenz bei PNGs.
Ich habe es bereits mit imagecolortransparent() und unzähligen Möglichkeiten die transparente Hintergrundfarbe zu bestimmen und zu dem imagecolortransparent() zu übergeben (imageallocate(), imagecolorexact(), imagecolorat()) versucht, bis ich dann hier etwas von einem imagealphablending() las...welches ich auch probiert habe...noch in Kombination mit imagecreatetruecolor() statt imagecreate() und einem imagecolorallocatealpha()...was aber auch keinen Erfolg brachte. Insgesamt eben unzählige verschiedene Kombinationen, die allesamt nicht halfen, deswegen habe ich mich dazu entschlossen hier ein Thema aufzumachen.
Anzumerken wäre vllt. noch, das es einmal geklappt hat, das Image transparent zu machen, undzwar mit imagecolorat() auf ein bestimmtes Pixel, was die später transparente Farbe enthält (reines rot) und anschliessendem imagecolortransparent()...nur ist das keinesfalls eine saubere Lösung und über imageallocate() bzw. den RGB Code dieses reinen Rotes (255,0,0) komme ich nicht auf die Lösung, was mich an sich verwundert, da das imagecolorat() und ein reines definieren der Farbe mit 255,0,0 ja das selbe Ergebnis liefern sollte. Jedoch habe ich auch schon in einem Grafikprogramm die Farbe in dem Pixel betrachtet und kam so auch auf eine Zusammensetzung der Farbtöne von 255,0,0.
Ich weiss einfach nichtmehr was ich noch probieren soll.
Ansich soll das Programm folgendes machen (vereinfacht):
Image 1 ist ein neues Image was erstellt werden soll.
Image 2 ist ein bereits bestehendes mit dem besagten Rot, das am Ende transparent sein soll.
Nun soll Image 2 nach Image 1 kopiert werden und Image 1 mit der transparenten Hintergrundfarbe abgespeichert werden.
Hier noch mein (aktueller) Stand/Code:
Dabei geht es wie bereits gesagt um die Transparenz bei PNGs.
Ich habe es bereits mit imagecolortransparent() und unzähligen Möglichkeiten die transparente Hintergrundfarbe zu bestimmen und zu dem imagecolortransparent() zu übergeben (imageallocate(), imagecolorexact(), imagecolorat()) versucht, bis ich dann hier etwas von einem imagealphablending() las...welches ich auch probiert habe...noch in Kombination mit imagecreatetruecolor() statt imagecreate() und einem imagecolorallocatealpha()...was aber auch keinen Erfolg brachte. Insgesamt eben unzählige verschiedene Kombinationen, die allesamt nicht halfen, deswegen habe ich mich dazu entschlossen hier ein Thema aufzumachen.
Anzumerken wäre vllt. noch, das es einmal geklappt hat, das Image transparent zu machen, undzwar mit imagecolorat() auf ein bestimmtes Pixel, was die später transparente Farbe enthält (reines rot) und anschliessendem imagecolortransparent()...nur ist das keinesfalls eine saubere Lösung und über imageallocate() bzw. den RGB Code dieses reinen Rotes (255,0,0) komme ich nicht auf die Lösung, was mich an sich verwundert, da das imagecolorat() und ein reines definieren der Farbe mit 255,0,0 ja das selbe Ergebnis liefern sollte. Jedoch habe ich auch schon in einem Grafikprogramm die Farbe in dem Pixel betrachtet und kam so auch auf eine Zusammensetzung der Farbtöne von 255,0,0.
Ich weiss einfach nichtmehr was ich noch probieren soll.
Ansich soll das Programm folgendes machen (vereinfacht):
Image 1 ist ein neues Image was erstellt werden soll.
Image 2 ist ein bereits bestehendes mit dem besagten Rot, das am Ende transparent sein soll.
Nun soll Image 2 nach Image 1 kopiert werden und Image 1 mit der transparenten Hintergrundfarbe abgespeichert werden.
Hier noch mein (aktueller) Stand/Code:
PHP-Code:
<?php
$file = "image.png";
$dir = "test/bla"; //zum hinspeichern
header("Content-type: image/png");
$src_img = imagecreatefrompng($file);
$img = imagecreatetruecolor(200,200);
$red = imagecolorallocatealpha($img, 255, 0, 0, 127);
ImageAlphaBlending($img, true);
imagecopy($img, $src_img, 0, 0, 0, 0, 200, 200);
imagepng($img, $dir."/test.png");
imagedestroy($img);
?>
Kommentar