Stefan Einspender: Wasserzeichen mit transparenten Hintergrund

Hallo,

auf ein bestehendes Bild möchte ich diagonal an den Ecken einen Schriftzug schreiben, welcher etwas durchlässig sein soll. Wenn der Schriftzug waagerecht platziert ist, alles kein Problem, aber wenn ich in drehe, dann ist das erzeugte Rechteck nicht transparent, was natürlich sehr unschön aussieht:

<?php

	$filename = 'https://jpeg.org/images/jpeg-home.jpg';

	header('Content-Type: image/jpeg');

	list($width, $height) = getimagesize($filename);

	$image = imagecreatefromjpeg($filename);

	$sx = 300;
	$sy = 30;

	$stamp = imagecreatetruecolor($sx, $sy);
	imagesavealpha($stamp, true);

	$white = imagecolorallocate($stamp, 255, 255, 255);
	imagefill($stamp, 0, 0, $white);

	$rotate = imagerotate($stamp, -45, imageColorAllocateAlpha($stamp, 150, 150, 150, 127));

	imagecopymerge($image, $rotate, $width - imagesx($rotate) + 30, -30, 0, 0, imagesx($rotate), imagesy($rotate), 70);

	imagejpeg($image, null, 100);

?>

Was mache ich falsch, wie erreiche ich, dass das Rechteck oben rechts komplett unsichtbar ist (außer natürlich das diagonale Banner)?

Mit freundlichen Grüßen, Stefan Einspender

  1. Hallo Stefan Einspender,

    möglicherweise machst du gar nichts falsch, weil der Algorithmus halt so arbeitet wie er arbeitet.

    Dreh doch versuchsweise mal das Bild, sodass der Schriftzug waagerecht bleibt, füge das Bild zusammen und drehe dann zurück.

    Bis demnächst
    Matthias

    --
    Pantoffeltierchen haben keine Hobbys.
    ¯\_(ツ)_/¯
    1. Hallo Matthias,

      möglicherweise machst du gar nichts falsch, weil der Algorithmus halt so arbeitet wie er arbeitet.

      Dreh doch versuchsweise mal das Bild, sodass der Schriftzug waagerecht bleibt, füge das Bild zusammen und drehe dann zurück.

      da ist es erstmal so, wie gewünscht, von daher danke. Allerdings ist es "schon sehr speziell", zumal ich dann auch erstmal austüfteln muss, wie groß das gedrehte Bild ist, ganz am Ende muss ich es ja auch wieder zurechtschneiden. Diese "Lösung" sehe ich wirklich als allerletzte Variante, sollte es überhaupt nicht anders möglich sein. Was ich aber nicht hoffe und auch nicht wirklich glaube, da muss es doch eine ganz normale Lösung geben?

      Viele Grüße, Stefan

      PS: Erschwerend kommt noch hinzu, dass ich diese Banderole in allen vier Ecken haben möchte, da werde ich ja mit Drehen überhaupt nicht mehr fertig ;-)

  2. Hallo,

    wenn ich in drehe, dann ist das erzeugte Rechteck nicht transparent,

    Hilft der 4. Parameter bei der imagerotate-Funktion?

    Gruß
    Kalk

    1. Hallo,

      wenn ich in drehe, dann ist das erzeugte Rechteck nicht transparent,

      Hilft der 4. Parameter bei der imagerotate-Funktion?

      macht bei mir überhaupt keinen Unterschied. Was ich aber eigenartig finde, weil der Parameter sollte ja schon etwas bewirken ... ?!

      Viele Grüße, Stefan

  3. Habe jetzt einen Kommentar auf php.net gefunden, die dort veröffentlichte Funktion löst das Problem. Sollte nicht jemand da noch eine elegantere Variante habe, denke ich damit arbeiten zu können.

  4. Hallo Stefan,

    huch, was sehen meine entzündeten Augen? Das ist ja mal eine nette Überraschung.

    Sieht man dich in nächster Zeit wieder öfter hier?

    LG,
    CK