Maison  >  Article  >  développement back-end  >  Analyse du filigrane ThinkPHP et définition de la position du filigrane

Analyse du filigrane ThinkPHP et définition de la position du filigrane

不言
不言original
2018-06-08 11:56:031987parcourir

Cet article présente principalement la méthode de filigrane et de définition de la position du filigrane dans ThinkPHP. Il analyse les étapes de fonctionnement associées et les techniques de mise en œuvre spécifiques de l'impression et de la définition du filigrane thinkPHP sous forme d'exemples.

L'exemple de cet article décrit comment imprimer des filigranes et définir la position du filigrane dans ThinkPHP. J'aimerais le partager avec vous pour votre référence. Les détails sont les suivants :

J'ai récemment utilisé la fonction de filigrane de Thinkphp et j'ai découvert qu'elle ne pouvait être imprimée que dans le coin inférieur gauche. La fonction de filigrane PHP est toujours très simple. Le plus important est d'utiliser

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 )
pour copier les coordonnées dans l'image src_im en commençant par src_x, src_y, la largeur est src_w et la hauteur est src_h vers dst_im. Les coordonnées dans l'image sont dst_x et la position de dst_y. Les deux images seront fusionnées sur la base du PCT, qui va de 0 à 100. Lorsque pct = 0, cela ne fait rien. Lorsqu'il vaut 100, cette fonction est exactement la même que imagecopy() pour les images de palette. Elle implémente la transparence alpha pour les images en vraies couleurs.

Image de démonstration du filigrane :

Je dois mettre le filigrane au centre réel de l'image, vérifiez le code Thinkphp. J'ai découvert que l'auteur l'avait écrit à mort, et je n'ai pu y apporter qu'une seule modification

/**
* 为图片添加水印
* @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;
  }
}

Ce qui précède est l'intégralité contenu de cet article, j'espère qu'il sera utile à l'apprentissage de tout le monde. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

Comment utiliser thinkphp pour obtenir l'adresse IP du client

À propos de la fonction du framework thinkphp d'ajout et méthode d'affichage des données

Affichage de la sortie du modèle ThinkPHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn