imagecopymerge setzt die definierte Transparenz für alle Pixel des zu kopierenden Bildes. imagecopy macht das nicht. Wenn dein GIF also transparent ist, würde ich es mal mit imagecopy versuchen. Alpha-Transparenz wäre damit auch möglich, dazu brauchst du aber als Quellmaterial ein PNG (das macht auch für die Schrift bessere Ergebnisse, weil die Schriftgrenzen keinen Treppeneffekt machen), und musst als Ziel immer mit einem Truecolor-Bild arbeiten (imagecreatetruecolor), und dort hineinkopieren.
Hey,
alos das mit dem imagecopy hab ich verstanden auch das ich ein png nehmen sollte ist mir jetzt klarr, aberan der Zusammensetzung der Bilder häng ich einwenig.
Also wenn ich dich richtig verstehe soll ich ein leeres Bild mit imagecreatetruecolor erzeugen und dort dann das Wasserzeichen und das Orginal reinkopieren. Richtig?
Hab das mal so probiert, aber das scheind nicht ganz richtig zu sein:
<?PHP
$strImage = $_SERVER['DOCUMENT_ROOT'].'/bildergalerie/'.$_GET['folder']."/".$_GET['image'];
if( !file_exists( $strImage ) ) die("Das angegebene Bild existiert nicht!");
$strWatermark = $_SERVER['DOCUMENT_ROOT'].'/wasserzeichen.png';
if( !file_exists( $strWatermark ) ) die("Das angegebene Wasserzeichen existiert nicht!");
list ( $Image_Width, $Image_Height, $Image_Type ) = getimagesize ( $strImage );
list ( $Watermark_Width, $Watermark_Height, $Watermark_Type ) = getimagesize ( $strWatermark );
$Watermark = imagecreatefrompng ( $strWatermark ) or die("Fehler bei imagecreatefromgif (Wasserzeichen)");
$Watermark_pos_x = $Image_Width - $Watermark_Width;
$Watermark_pos_y = $Image_Height - $Watermark_Height;
switch ( $Image_Type ){
case 1:
$Img = imagecreatefromgif ( $strImage ) or die("Fehler bei imagecreatefromgif");
break;
case 2:
$Img = imagecreatefromjpeg ( $strImage ) or die("Fehler bei imagecreatefromjpeg");
break;
case 3:
$Img = imagecreatefrompng ( $strImage ) or die("Fehler bei imagecreatefrompng");
break;
default;
die("Es gibt ein Problem bei switch von ImageCreate!");
}
$image = imagecreatetruecolor($Image_Width, $Image_Height);
imagecopy ($image, $Watermark, 0, 0, $Watermark_Width, $Watermark_Height, $Watermark_pos_x, $Watermark_pos_y)
or die("Fehler bei imagecopymerge");
imagecopy ($image, $Watermark, 0, 0, $Image_Width, $Image_Height, 0,0)
or die("Fehler bei imagecopymerge");
switch ( $Image_Type ){
case 1:
header ( 'content-type: image/gif' );
imagegif ( $Img );
break;
case 2:
header ( 'content-type: image/jpeg' );
imagejpeg ( $Img, '', $Transpares );
break;
case 3:
default:
header ( 'content-type: image/png' );
imagepng ( $Img );
}
imagedestroy ( $Img );
imagedestroy ( $Watermark );
imagedestroy ( $Watermark_out );
?>
Ausgabe:
Mfg