Maison  >  Article  >  développement back-end  >  Comment créer un filigrane et définir la position du filigrane dans ThinkPHP (exemple d'analyse)

Comment créer un filigrane et définir la position du filigrane dans ThinkPHP (exemple d'analyse)

墨辰丷
墨辰丷original
2018-06-01 09:34:291472parcourir

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.

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


copier le code Le code est le suivant :

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 )

Démarrez les coordonnées dans l'image src_im à partir de src_x, src_y , la largeur est src_w et la hauteur Copie une partie de src_h aux positions de coordonnées dst_x et dst_y dans l'image dst_im. 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;
  }
}

Résumé : Ce qui précède est le résumé de cet article Tout le contenu, j'espère qu'il sera utile à l'étude de chacun.

Recommandations associées :

PHP implémente des méthodes magiques et concernant les instances indépendantes et les instances connectées

PHP renvoie un JSON au Objet frontal

phpMéthodes pour implémenter le téléchargement, le téléchargement et la suppression de fichiers

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