Heim > Artikel > Backend-Entwicklung > Sie müssen verstehen, wie man Bildwasserzeichen in PHP hinzufügt
Im vorherigen Artikel habe ich Ihnen „Wie zoomt und beschneidet man Bilder in PHP?“ vorgestellt. (Detailliertes Beispiel) “, das anhand von Beispielen vorstellt, wie man Grafiken in PHP zoomt und zuschneidet. Dieser Artikel wirft weiterhin einen Blick auf die Kenntnisse der Grafikverarbeitung in PHP und darauf, wie wir Bildern Wasserzeichen hinzufügen sollten. Hoffe, es hilft allen!
Um zu verhindern, dass unsere Bilder gestohlen werden, werden in unserem täglichen Leben häufig Wasserzeichen zu einigen Bildern hinzugefügt. Wenn Sie beispielsweise auf unserer Website eine Bilddatei eingeben, wird automatisch ein Wasserzeichen hinzugefügt in der unteren rechten Ecke. Wie wird dieser Wasserzeicheneffekt erreicht? Der Effekt des Hinzufügens von Wasserzeichen zu Bildern kann durch PHP erreicht werden.
Im vorherigen Artikel ähnelt der Vorgang des Zuschneidens und Platzierens des Bildes auf dem Zielbild dem Hinzufügen eines Wasserzeichens. Um ein Wasserzeichen hinzuzufügen, müssen Sie die Funktion imagecopymerge verwenden.
<strong><span style="font-size: 18px;">imagecopymerge</span></strong>
Funktion<strong><span style="font-size: 18px;">imagecopymerge</span></strong>
函数
imagecopymerge函数的语法格式如下:
imagecopymerge($目标图片,$来源图片,$目标开始的x ,$目标开始的y,$来源的x ,$来源的y ,$来源的宽 ,$来源的高 ,$透明度)
其中透明度的值是0-100的整数,透明度的值越大,水印越不透明。
接下来我们通过实例来看一下应该怎样给图片增加水印:
首先准备了一个名为test.png的图片和一个名为logo.png的水印图片放到了我们的根目录里
注意上面这个是示例图片,下面的水印并不是我添加的,是网站自动添加的,为了区分,实例的水印是下面这样的
那接下来,操作如下:
<?php //打开目标图片 $dst = imagecreatefrompng('test.png'); //打开Logo来源图片 $src = imagecreatefrompng('logo.png'); //得到目标图片的宽高 $dst_info = getimagesize('test.png'); //得到logo图片的宽高 $src_info = getimagesize('logo.png'); //放到最右下脚可得出图片水印图片需要开始的位置即: //x点位置:需要大图的宽 - 小图的宽; //y点位置:放大图的高 - 小图的高 $dst_x = $dst_info[0] - $src_info[0]; $dst_y = $dst_info[1] - $src_info[1]; //要将图片加在右下脚 imagecopymerge($dst, $src, $dst_x, $dst_y, 0, 0, $src_info[0], $src_info[1], 50); header('Content-type:image/png'); imagepng($dst); imagedestroy($dst); imagedestroy($src); ?>
输出结果:
由上述结果可以看出,通过imagecopymerge函数添加了一个透明度为50的水印。
拓展知识<strong><span style="font-size: 18px;">imagecopy</span></strong>
函数
不止使用imagecopymerge函数一种方法添加水印,也能够通过 imagecopy()
imagecopy($目标图片, $来源图片,$目标图片x,$目标图片y,$来源图片x,$来源图片y,$来源图片宽,$来源图片高)
Zuerst haben wir ein Bild namens test.png und ein Wasserzeichenbild namens logo.png vorbereitet und sie in unserem Stammverzeichnis abgelegt
Bezahlen Achtung: Dies ist ein Beispielbild. Das Wasserzeichen unten wurde nicht von mir hinzugefügt, sondern wurde automatisch von der Website hinzugefügt. Zur Unterscheidung lautet das Wasserzeichen des Beispiels wie folgt:
Dann ist die Operation wie folgt:imagesx(resource $image) imagesy(resource $image)Ausgabeergebnis: 🎜Wie es sein kann Aus den obigen Ergebnissen geht hervor, dass die Funktion imagecopymerge zum Hinzufügen eines Wasserzeichens mit einer Deckkraft von 50 verwendet wird. 🎜🎜Wissen erweitern
<strong><span style="font-size: 18px;">Bildkopie span> span></span></strong>
Funktion🎜🎜Es gibt nicht nur eine Möglichkeit, Wasserzeichen mit der hinzuzufügen imagecopymerge-Funktion, aber Sie können auch über die Funktion imagecopy()
einen Teil der Funktion kopieren. Das Syntaxformat lautet wie folgt: 🎜<?php function watermark($img, $watermark, $district = 0,$watermarkquality = 95){ $imginfo = @getimagesize($img); $watermarkinfo = @getimagesize($watermark); $img_w = $imginfo[0]; $img_h = $imginfo[1]; $watermark_w = $watermarkinfo[0]; $watermark_h = $watermarkinfo[1]; if($district == 0) $district = rand(1,9); if(!is_int($district) OR 1 > $district OR $district > 9) $district = 9; switch($district){ case 1: $x = +5; $y = +5; break; case 2: $x = ($img_w - $watermark_w) / 2; $y = +5; break; case 3: $x = $img_w - $watermark_w - 5; $y = +5; break; case 4: $x = +5; $y = ($img_h - $watermark_h) / 2; break; case 5: $x = ($img_w - $watermark_w) / 2; $y = ($img_h - $watermark_h) / 2; break; case 6: $x = $img_w - $watermark_w; $y = ($img_h - $watermark_h) / 2; break; case 7: $x = +5; $y = $img_h - $watermark_h - 5; break; case 8: $x = ($img_w - $watermark_w) / 2; $y = $img_h - $watermark_h - 5; break; case 9: $x = $img_w - $watermark_w - 5; $y = $img_h - $watermark_h - 5; break; } switch ($imginfo[2]) { case 1: $im = @imagecreatefromgif($img); break; case 2: $im = @imagecreatefromjpeg($img); break; case 3: $im = @imagecreatefrompng($img); break; } switch ($watermarkinfo[2]) { case 1: $watermark_logo = @imagecreatefromgif($watermark); break; case 2: $watermark_logo = @imagecreatefromjpeg($watermark); break; case 3: $watermark_logo = @imagecreatefrompng($watermark); break; } if(!$im or !$watermark_logo) return false; $dim = @imagecreatetruecolor($img_w, $img_h); if(@imagecopy($dim, $im, 0, 0, 0, 0,$img_w,$img_h )){ imagecopy($dim, $watermark_logo, $x, $y, 0, 0, $watermark_w, $watermark_h); } $file = dirname($img) . '/w' . basename($img); $result = imagejpeg ($dim,$file,$watermarkquality); imagedestroy($watermark_logo); imagedestroy($dim); imagedestroy($im); if($result){ echo $img.' 水印添加成功'; return; } else { return false; } } $file = 'test.png'; //待加水印的图片地址 $water = 'logo.png'; //水印图片的地址 watermark($file, $water); ?>🎜Das bedeutet, wählen Sie die Breite w bei (x, y) des Quellbildes, ein rechteckiger Bereich mit der Höhe h bis (x, y) des Zielbildes. 🎜🎜🎜Verwenden Sie die Funktionen imagesx() und imagesy() in PHP, um die Breite bzw. Höhe des Bildes zu ermitteln. Ihr Syntaxformat ist wie folgt: 🎜rrreee🎜Das Beispiel ist wie folgt: 🎜🎜rrreee🎜Ausgabeergebnis: 🎜🎜🎜🎜🎜🎜Der Effekt ist wie folgt: 🎜🎜🎜🎜🎜Empfohlenes Lernen: „🎜PHP-Video-Tutorial 🎜" 🎜
Das obige ist der detaillierte Inhalt vonSie müssen verstehen, wie man Bildwasserzeichen in PHP hinzufügt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!