Heim >Backend-Entwicklung >PHP-Tutorial >Analyse zum ThinkPHP-Wasserzeichen und Festlegen der Wasserzeichenposition

Analyse zum ThinkPHP-Wasserzeichen und Festlegen der Wasserzeichenposition

不言
不言Original
2018-06-08 11:56:032051Durchsuche

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

Das Beispiel in diesem Artikel beschreibt, wie man Wasserzeichen druckt und die Wasserzeichenposition in ThinkPHP festlegt. Ich möchte es als Referenz mit Ihnen teilen:

Ich habe kürzlich die Wasserzeichenfunktion von Thinkphp verwendet und festgestellt, dass es nur in der unteren linken Ecke gedruckt werden kann. Die PHP-Wasserzeichenfunktion ist immer noch sehr einfach. Das Wichtigste ist,

bool imagecopymerge ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h , int $pct )

zu verwenden, um die Koordinaten im src_im-Bild beginnend mit src_x, src_y, mit einer Breite von src_w und einer Höhe von src_h in einen Teil zu kopieren das dst_im-Bild, in dem die Koordinaten dst_x und dst_y sind. 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 Truecolor-Bilder.

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[&#39;height&#39;] < $wInfo[&#39;height&#39;]) return false; //建立图像 $sCreateFun = "imagecreatefrom" . $sInfo[&#39;type&#39;]; $sImage = $sCreateFun($source); $wCreateFun = "imagecreatefrom" . $wInfo[&#39;type&#39;]; $wImage = $wCreateFun($water); //设定图像的混色模式 imagealphablending($wImage, true); //图像位置,默认为右下角右对齐 $posArr = $this->WaterPostion($postion,$sInfo,$wInfo); //新增
  //生成混合图像
  imagecopymerge($sImage, $wImage, $posArr[0], $posArr[1], 0, 0, $wInfo[&#39;width&#39;], $wInfo[&#39;height&#39;], $alpha);
  //输出图像
  $ImageFun = &#39;Image&#39; . $sInfo[&#39;type&#39;];
 //如果没有给出保存文件名,默认为原图像名
 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;
  }
}

Das Obige ist der gesamte Inhalt von Ich hoffe, dass dieser Artikel für alle hilfreich sein wird. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website!

Verwandte Empfehlungen:

So verwenden Sie thinkphp, um die Client-IP zu erhalten

Über die Funktion des thinkphp-Frameworks zum Hinzufügen von und Daten anzeigen Methode

Ausgabeanzeige der ThinkPHP-Vorlage

Das obige ist der detaillierte Inhalt vonAnalyse zum ThinkPHP-Wasserzeichen und Festlegen der Wasserzeichenposition. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn