-
Notifications
You must be signed in to change notification settings - Fork 50
Expand file tree
/
Copy pathexamples.xml
More file actions
151 lines (138 loc) · 5.1 KB
/
examples.xml
File metadata and controls
151 lines (138 loc) · 5.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 9960a09a5705102bf4dd0ce63e03d9ec716d0015 Maintainer: jaenecke Status: ready -->
<!-- Reviewed: no -->
<chapter xml:id="image.examples" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
&reftitle.examples;
<section xml:id="image.examples-png">
<title>PNG erzeugen mit PHP</title>
<para>
<example>
<title>PNG erzeugen mit PHP</title>
<programlisting role="php">
<![CDATA[
<?php
header("Content-type: image/png");
$string = $_GET['text'];
$im = imagecreatefrompng("images/button1.png");
$orange = imagecolorallocate($im, 220, 210, 60);
$px = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, 3, $px, 9, $string, $orange);
imagepng($im);
?>
]]>
</programlisting>
</example>
Dieses Beispiel würde von einer Seite über einen Link wie <literal><img
src="button.php?text=text"></literal> aufgerufen.
Das oben aufgezeigte Beispielskript <filename>button.php</filename> nimmt den
Text <literal>"text"</literal> entgegen und legt diesen über ein
vorhandenes Bild, in diesem Fall <literal>"images/button1.png"</literal>
und gibt die resultierende Grafik aus.
Diese Vorgehensweise ist sehr zweckmäßig, wenn Sie vermeiden wollen, dass
Sie immer wieder neue Button-Grafiken erstellen müssen, falls Sie die
Beschriftung eines Buttons ändern wollen. Mit der vorgestellten Methode
werden Ihre Buttons, samt Beschriftung, dynamisch generiert.
</para>
</section>
<section xml:id="image.examples-watermark">
<title>Wasserzeichen mit Hilfe von Alpha-Kanälen zufügen</title>
<para>
<example>
<title>Wasserzeichen mit Hilfe von Alpha-Kanälen zufügen</title>
<programlisting role="php">
<![CDATA[
<?php
// Wasserzeichen und Foto laden
$stamp = imagecreatefrompng('stamp.png');
$im = imagecreatefromjpeg('photo.jpeg');
// Ränder für Wasserzeichen festlegen, dessen Höhe und Breite bestimmen
$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);
// Wasserzeichen auf das Foto kopieren, die Position berechnet sich dabei aus
// den Rändern und der Bildbreite
imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));
// Ausgeben
header('Content-type: image/png');
imagepng($im);
?>
]]>
</programlisting>
<mediaobject>
<alt>Wasserzeichen mit Hilfe von Alpha-Kanälen zufügen</alt>
<imageobject>
<imagedata fileref="en/reference/image/figures/watermarks.png" />
</imageobject>
</mediaobject>
</example>
Dieses Beispiel zeigt eine übliche Vorgehensweise um ein Wasserzeichen auf
Fotos oder urheberrechtlich geschützten Bildern anzubringen. Beachten Sie, daß
die Wasserzeichen-Grafik einen Alphakanal enthält. Dieser wird beim Kopiervorgang
beibehalten.
</para>
</section>
<section xml:id="image.examples.merged-watermark">
<title>Erstellen eines transparenten Wasserzeichens mit <function>imagecopymerge</function></title>
<para>
<example>
<title>Erstellen eines transparenten Wasserzeichens mit <function>imagecopymerge</function></title>
<programlisting role="php">
<![CDATA[
<?php
// Foto laden
$im = imagecreatefromjpeg('photo.jpeg');
// wir erstellen ein Wasserzeichen mit GD
$stamp = imagecreatetruecolor(100, 70);
imagefilledrectangle($stamp, 0, 0, 99, 69, 0x0000FF);
imagefilledrectangle($stamp, 9, 9, 90, 60, 0xFFFFFF);
imagestring($stamp, 5, 20, 20, 'libGD', 0x0000FF);
imagestring($stamp, 3, 20, 40, '(c) 2007-9', 0x0000FF);
// Ränder setzen, Dimensionen ermitteln
$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);
// Wasserzeichen mit einer Transparenz von 50% über das Foto legen
imagecopymerge($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp), 50);
// Bild in einer Datei speichern
imagepng($im, 'photo_stamp.png');
?>
]]>
</programlisting>
<mediaobject>
<alt>Erstellen eines transparenten Wasserzeichens mit imagecopymerge()</alt>
<imageobject>
<imagedata fileref="en/reference/image/figures/watermark-merged.png" />
</imageobject>
</mediaobject>
</example>
Dieses Beispiel nutzt <function>imagecopymerge</function> um das Wasserzeichen
über das Original-Bild zu legen. Dabei können wir die Transparenz des Wasserzeichens
frei bestimmen - im Beispiel werden 50% gesetzt.
In der Praxis wäre dies ein sinnvolles Vorgehen zum Urheberschutz, da halbtransparente
Wasserzeichen schwierig zu entfernen sind, dem Betrachter aber trotzdem erlauben
das Bild zu sehen.
</para>
</section>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->