Hallo zusammen,
ich habe mich nun wieder einmal mit ein bisschen Bilderstellung in PHP beschäftigt, denn ich habe folgendes vor:
- Ich möchte einen einfarbigen Hintergrund erstellen.
- Darüber möchte ich ein PNG-Bild legen, welches transparente und halbtransparente Bereiche enthält.
Also habe ich mich ein wenig umgeschaut, die passenden Funktionen unter PHP gesucht und bin zu folgendem Ergebnis gekommen:
[PHP]<?php
error_reporting(E_ALL|E_STRICT);
ini_set(‚display_errors‘, 1);
function imagecolorize ($img_orig, $img_new, $opacity, $pfad, $r=0, $g=0, $b=0) {
// Kopie des Originalbildes erstellen
$img = imagecreatefrompng($pfad.$img_orig);
// Bildbreite und -höhe ermitteln
$img_width = imagesx($img);
$img_height = imagesy($img);
// Layer anlegen
$layer = imagecreate($img_width, $img_height);
// Alphatransparenz behalten
imagealphablending($img, true);
imagealphablending($layer, true);
// Farbe zuordnen
$color = imagecolorallocate($layer, $r, $g, $b);
// Layer mit der Farbe fuellen
$fill = imagefill($layer, 0, 0, $color);
// Layer und Bildkopie "mergen"
$merge = imagecopymerge($layer, $img, 0, 0, 0, 0, $img_width, $img_height, $opacity);
// Bild abspeichern
imagepng($img, $pfad.$img_new);
// Layer vernichten
imagedestroy($layer);
// Originalbild vernichten
imagedestroy($img);
}
// Parameter
$img_orig = „feld3.png“; // Name Originalbild
$img_new = „testneu.png“; // Name neues (gefaerbtes) Bild
$opacity = 50; // Deckkraft (Wert zwischen 0 (transparent) und 100 (deckend)
$pfad = „/var/www/sckunst/img/“; // Physikalischer Pfad zum Bilderordner (mit $_SERVER[‚DOCUMENT_ROOT‘] zu ermitteln, dann noch Verzeichnis dranhaengen)
$r = 255; // rot
$g = 50; // grün
$b = 80; // blau
imagecolorize($img_orig, $img_new, $opacity, $pfad, $r, $g, $b);
?>[/PHP]
Ist aber blöd, denn das darüber gelegte Bild ist nicht transparent, sondern wird durch die im PNG hinterlegte Ersatzfarbe ersetzt. Wo ist mein Fehler?
Viele Grüße
Körnerbrötchen