tag:forum.selfhtml.org,2005:/selfWasserzeichen mit transparenten Hintergrund – SELFHTML-Forum2019-08-20T04:58:27Zhttps://forum.selfhtml.org/self/2019/aug/19/wasserzeichen-mit-transparenten-hintergrund/1756056#m1756056Stefan Einspender2019-08-19T15:46:42Z2019-08-19T15:46:42ZWasserzeichen mit transparenten Hintergrund<p>Hallo,</p>
<p>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:</p>
<pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span>
<span class="token variable">$filename</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'https://jpeg.org/images/jpeg-home.jpg'</span><span class="token punctuation">;</span>
<span class="token function">header</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'Content-Type: image/jpeg'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">list</span><span class="token punctuation">(</span><span class="token variable">$width</span><span class="token punctuation">,</span> <span class="token variable">$height</span><span class="token punctuation">)</span> <span class="token operator">=</span> <span class="token function">getimagesize</span><span class="token punctuation">(</span><span class="token variable">$filename</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$image</span> <span class="token operator">=</span> <span class="token function">imagecreatefromjpeg</span><span class="token punctuation">(</span><span class="token variable">$filename</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$sx</span> <span class="token operator">=</span> <span class="token number">300</span><span class="token punctuation">;</span>
<span class="token variable">$sy</span> <span class="token operator">=</span> <span class="token number">30</span><span class="token punctuation">;</span>
<span class="token variable">$stamp</span> <span class="token operator">=</span> <span class="token function">imagecreatetruecolor</span><span class="token punctuation">(</span><span class="token variable">$sx</span><span class="token punctuation">,</span> <span class="token variable">$sy</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token function">imagesavealpha</span><span class="token punctuation">(</span><span class="token variable">$stamp</span><span class="token punctuation">,</span> <span class="token constant boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$white</span> <span class="token operator">=</span> <span class="token function">imagecolorallocate</span><span class="token punctuation">(</span><span class="token variable">$stamp</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token function">imagefill</span><span class="token punctuation">(</span><span class="token variable">$stamp</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token variable">$white</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$rotate</span> <span class="token operator">=</span> <span class="token function">imagerotate</span><span class="token punctuation">(</span><span class="token variable">$stamp</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">45</span><span class="token punctuation">,</span> <span class="token function">imageColorAllocateAlpha</span><span class="token punctuation">(</span><span class="token variable">$stamp</span><span class="token punctuation">,</span> <span class="token number">150</span><span class="token punctuation">,</span> <span class="token number">150</span><span class="token punctuation">,</span> <span class="token number">150</span><span class="token punctuation">,</span> <span class="token number">127</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token function">imagecopymerge</span><span class="token punctuation">(</span><span class="token variable">$image</span><span class="token punctuation">,</span> <span class="token variable">$rotate</span><span class="token punctuation">,</span> <span class="token variable">$width</span> <span class="token operator">-</span> <span class="token function">imagesx</span><span class="token punctuation">(</span><span class="token variable">$rotate</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token number">30</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">30</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token function">imagesx</span><span class="token punctuation">(</span><span class="token variable">$rotate</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token function">imagesy</span><span class="token punctuation">(</span><span class="token variable">$rotate</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token number">70</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token function">imagejpeg</span><span class="token punctuation">(</span><span class="token variable">$image</span><span class="token punctuation">,</span> <span class="token constant">null</span><span class="token punctuation">,</span> <span class="token number">100</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token delimiter important">?></span></span>
</code></pre>
<p>Was mache ich falsch, wie erreiche ich, dass das Rechteck oben rechts komplett unsichtbar ist (außer natürlich das diagonale Banner)?</p>
<p>Mit freundlichen Grüßen,
Stefan Einspender</p>
https://forum.selfhtml.org/self/2019/aug/19/wasserzeichen-mit-transparenten-hintergrund/1756065#m1756065Matthias Apselmatthias.apsel@selfhtml.orghttps://brückentage.info2019-08-19T16:34:48Z2019-08-19T16:34:48ZWasserzeichen mit transparenten Hintergrund<p>Hallo Stefan Einspender,</p>
<p>möglicherweise machst du gar nichts falsch, weil der Algorithmus halt so arbeitet wie er arbeitet.</p>
<p>Dreh doch versuchsweise mal das Bild, sodass der Schriftzug waagerecht bleibt, füge das Bild zusammen und drehe dann zurück.</p>
<p>Bis demnächst<br>
Matthias</p>
<div class="signature">-- <br>
Pantoffeltierchen haben keine Hobbys.<br>
¯\_(ツ)_/¯
</div>
https://forum.selfhtml.org/self/2019/aug/19/wasserzeichen-mit-transparenten-hintergrund/1756068#m1756068Tabellenkalk2019-08-19T17:06:32Z2019-08-19T17:06:32ZWasserzeichen mit transparenten Hintergrund<p>Hallo,</p>
<blockquote>
<p>wenn ich in drehe, dann ist das erzeugte Rechteck nicht transparent,</p>
</blockquote>
<p>Hilft der 4. Parameter bei der imagerotate-Funktion?</p>
<p>Gruß<br>
Kalk</p>
https://forum.selfhtml.org/self/2019/aug/19/wasserzeichen-mit-transparenten-hintergrund/1756076#m1756076Stefan Einspender2019-08-19T18:21:21Z2019-08-19T18:21:21ZWasserzeichen mit transparenten Hintergrund<p>Habe jetzt einen <a href="https://www.php.net/manual/de/function.imagecopymerge.php#92787" rel="nofollow noopener noreferrer">Kommentar auf php.net</a> 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.</p>
https://forum.selfhtml.org/self/2019/aug/19/wasserzeichen-mit-transparenten-hintergrund/1756079#m1756079Christian Krusehttps://wwwtech.de/about2019-08-20T04:58:27Z2019-08-20T04:58:27ZWasserzeichen mit transparenten Hintergrund<p>Hallo Stefan,</p>
<p>huch, was sehen meine entzündeten Augen? Das ist ja mal eine nette Überraschung.</p>
<p>Sieht man dich in nächster Zeit wieder öfter hier?</p>
<p>LG,<br>
CK</p>
<div class="signature">-- <br>
<a href="https://wwwtech.de/about" rel="noopener noreferrer">https://wwwtech.de/about</a>
</div>
https://forum.selfhtml.org/self/2019/aug/19/wasserzeichen-mit-transparenten-hintergrund/1756066#m1756066Stefan Einspender2019-08-19T16:54:15Z2019-08-19T16:54:15ZWasserzeichen mit transparenten Hintergrund<p>Hallo Matthias,</p>
<blockquote>
<p>möglicherweise machst du gar nichts falsch, weil der Algorithmus halt so arbeitet wie er arbeitet.</p>
<p>Dreh doch versuchsweise mal das Bild, sodass der Schriftzug waagerecht bleibt, füge das Bild zusammen und drehe dann zurück.</p>
</blockquote>
<p>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?</p>
<p>Viele Grüße,
Stefan</p>
<p>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 ;-)</p>
https://forum.selfhtml.org/self/2019/aug/19/wasserzeichen-mit-transparenten-hintergrund/1756074#m1756074Stefan Einspender2019-08-19T17:35:24Z2019-08-19T17:35:24ZWasserzeichen mit transparenten Hintergrund<p>Hallo,</p>
<blockquote>
<blockquote>
<p>wenn ich in drehe, dann ist das erzeugte Rechteck nicht transparent,</p>
</blockquote>
<p>Hilft der 4. Parameter bei der imagerotate-Funktion?</p>
</blockquote>
<p>macht bei mir überhaupt keinen Unterschied. Was ich aber eigenartig finde, weil der Parameter sollte ja schon etwas bewirken ... ?!</p>
<p>Viele Grüße,
Stefan</p>