Heim > Artikel > Backend-Entwicklung > So erstellen Sie ein Wasserzeichen und legen die Position des Wasserzeichens in ThinkPHP fest (Beispielanalyse)
Dieser Artikel stellt hauptsächlich die Methode zum Markieren und Festlegen von Wasserzeichen in ThinkPHP vor. Er analysiert die zugehörigen Arbeitsschritte und spezifische Implementierungstechniken zum Drucken und Festlegen von Wasserzeichen in ThinkPHP in Form von Beispielen
Ich habe kürzlich die Wasserzeichenfunktion von Thinkphp verwendet und festgestellt, dass sie nur in der unteren linken Ecke gedruckt werden kann. Die PHP-Wasserzeichenfunktion ist immer noch sehr einfach. Das Wichtigste ist die Verwendung von
Kopiercode Der Code lautet wie folgt:
bool imagecopymerge ( Ressource $dst_im , Ressource $src_im, int $dst_x, int $dst_y, int $src_x, int $src_y, int $src_w, int $src_h, int $pct)
Beginnen Sie die Koordinaten im src_im-Bild von src_x, src_y , die Breite ist src_w und die Höhe. Kopieren Sie einen Teil von src_h an die Positionen der Koordinaten dst_x und dst_y im dst_im-Bild. Die beiden Bilder werden basierend auf pct zusammengeführt, der zwischen 0 und 100 liegt. Wenn pct = 0, bewirkt es tatsächlich nichts. Wenn es 100 ist, ist diese Funktion genau das Gleiche wie imagecopy() für Palettenbilder. Sie implementiert Alpha-Transparenz für Echtfarbenbilder.
Wasserzeichen-Demobild:
Ich muss das Wasserzeichen in der tatsächlichen Mitte des Bildes platzieren, überprüfen Sie den Thinkphp-Code. Ich habe festgestellt, dass der Autor es tatsächlich zu Tode geschrieben hat und ich nur eine Änderung vornehmen konnte
/** * 为图片添加水印 * @static public * @param string $source 原文件名 * @param string $water 水印图片 * @param string $$savename 添加水印后的图片名 * @param string $postion 水印的具体位置 leftbottom rightbottom lefttop righttop center <新增> * @param string $alpha 水印的透明度 * @return void */ static public function water($source, $water, $savename=null,$postion="center", $alpha=80) { //检查文件是否存在 if (!file_exists($source) || !file_exists($water)) return false; //图片信息 $sInfo = self::getImageInfo($source); $wInfo = self::getImageInfo($water); //如果图片小于水印图片,不生成图片 if ($sInfo["width"] < $wInfo["width"] || $sInfo['height'] < $wInfo['height']) return false; //建立图像 $sCreateFun = "imagecreatefrom" . $sInfo['type']; $sImage = $sCreateFun($source); $wCreateFun = "imagecreatefrom" . $wInfo['type']; $wImage = $wCreateFun($water); //设定图像的混色模式 imagealphablending($wImage, true); //图像位置,默认为右下角右对齐 $posArr = $this->WaterPostion($postion,$sInfo,$wInfo); //新增 //生成混合图像 imagecopymerge($sImage, $wImage, $posArr[0], $posArr[1], 0, 0, $wInfo['width'], $wInfo['height'], $alpha); //输出图像 $ImageFun = 'Image' . $sInfo['type']; //如果没有给出保存文件名,默认为原图像名 if (!$savename) { $savename = $source; @unlink($source); } //保存图像 $ImageFun($sImage, $savename); imagedestroy($sImage); } private function WaterPostion($postion,$sInfo,$wInfo) { $posY = $sInfo["height"] - $wInfo["height"]; $posX = $sInfo["width"] - $wInfo["width"]; switch($postion) { case "rightbottom": return array($posX,$posY); break; case "leftbottom": return array($wInfo["width"],$posY); break; case "lefttop": return array($wInfo["width"],$wInfo["height"]); break; case "righttop": return array($posX,$wInfo["height"]); break; case "center": return array($posX/2,$posY/2); break; } }
Zusammenfassung: Das Obige ist das Ganze Ich hoffe, dass der Inhalt dieses Artikels für das Studium aller hilfreich sein kann.
Verwandte Empfehlungen:
PHP implementiert magische Methoden und über unabhängige Instanzen und verbundene Instanzen
PHP gibt einen JSON an den zurück Front-End-Objekt
phpMethoden zum Implementieren des Hochladens, Herunterladens und Löschens von Dateien
Das obige ist der detaillierte Inhalt vonSo erstellen Sie ein Wasserzeichen und legen die Position des Wasserzeichens in ThinkPHP fest (Beispielanalyse). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!