Alpha-Transparentes-PNG erstellen
Matze
- php
0 Sven Rautenberg0 Matze
Hallo Forum,
ich habe ein PNG(500x120px). Der Hintergrund des Bildes ist transparent, "vorn" ist ein Logo.
Jetzt möchte ich das Bild dynamisch mit Text versehen und ausgeben.
Bevor ich mich an den Text setze, wollte ich erstmal schauen, ob die Transparenz beibehalten wird.
Dazu habe ich ein kleines Script geschrieben:
// Bildgröße ermitteln
$size = getimagesize("banner.png");
$width = $size[0];
$height = $size[1];
// neues Image erzeugen
$img = imagecreatefrompng("banner.png");
$createimg = imagecreatetruecolor($width, $height);
imagecopyresized($createimg, $img, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);
// Bild anzeigen
header("Content-type: image/png");
imagepng($createimg);
Was passiert ist, dass ich in dem neuen Bild einen schwarzen Hintergrund habe.
Ich muss also wahrscheinlich den Alpha-Wert irgendwie aus dem Original-Bild auslesen und in das erstellte Bild übernehmen.
Wie löst man so etwas?
Welche Funktionen sind dafür geeignet?
Danke für eure Hilfe!
Grüße, Matze
Moin!
Was passiert ist, dass ich in dem neuen Bild einen schwarzen Hintergrund habe.
Weil der schwarze Hintergrund von imagecreatetruecolor() als Standard vorbelegt ist.
Ich muss also wahrscheinlich den Alpha-Wert irgendwie aus dem Original-Bild auslesen und in das erstellte Bild übernehmen.
Nein. Du musst ein leeres transparentes Bild nehmen, in das du das neue Bild reinkopierst. Sprich: Das Schwarz durch Volltransparenz ersetzen, bzw. ausmalen.
- Sven Rautenberg
Hallo Sven,
Nein. Du musst ein leeres transparentes Bild nehmen, in das du das neue Bild reinkopierst. Sprich: Das Schwarz durch Volltransparenz ersetzen, bzw. ausmalen.
Danke für den Hinweis!
Jetzt verschwindet aber auch alles andere was schwarz ist (Teile des Logos).
Wie kann ich das verhindern?
Grüße, Matze
Moin!
Nein. Du musst ein leeres transparentes Bild nehmen, in das du das neue Bild reinkopierst. Sprich: Das Schwarz durch Volltransparenz ersetzen, bzw. ausmalen.
Danke für den Hinweis!
Jetzt verschwindet aber auch alles andere was schwarz ist (Teile des Logos).
Wie kann ich das verhindern?
Es gibt da noch eine Funktion imagealphablending(), die regelt, wie die GDlib Farben zusammenmischt.
- Sven Rautenberg
Hallo,
Es gibt da noch eine Funktion imagealphablending(), die regelt, wie die GDlib Farben zusammenmischt.
und die Funktion imagesavealpha, die sich darum kümmert, ob volle Alphakanalinformationen (bei PNG) gespeichert werden.
Freundliche Grüße
Vinzenz
Moin!
Es gibt da noch eine Funktion imagealphablending(), die regelt, wie die GDlib Farben zusammenmischt.
und die Funktion imagesavealpha, die sich darum kümmert, ob volle Alphakanalinformationen (bei PNG) gespeichert werden.
Ja, stimmt. Ich hatte vor viel zu langer Zeit mit dem ganzen Krempel mal gearbeitet und experimentieren müssen, um eine Kombination aus Farbverlauf im Hintergrund, Grafikoverlay mit Alphatransparenz plus Texteinbindung zu erstellen, und es lief gefühlt darauf hinaus, einfach alle mit Transparenz in Verbindung bringbare Funktionen, die Boolean-Werte entgegennehmen, hintereinander aufzulisten und solange an den Werten herumzuspielen, bis eine Kombination das gewünschte Bildergebnis gebracht hat. ;)
- Sven Rautenberg
Hallo,
imagealphablending($createpreimg, false);
imagesavealpha($createpreimg, true);
liefert mir das Ergebniss.
Herzlichen Dank!
Grüße, Matze