ホームページ >バックエンド開発 >PHPチュートリアル >ThinkPHP でウォーターマークを入れる方法とウォーターマークの位置を設定する方法 (分析例)

ThinkPHP でウォーターマークを入れる方法とウォーターマークの位置を設定する方法 (分析例)

墨辰丷
墨辰丷オリジナル
2018-06-01 09:34:291536ブラウズ

この記事では、ThinkPHP でウォーターマークを印刷し、ウォーターマークの位置を設定する方法を主に紹介し、関連する操作手順と、thinkPHP の印刷とウォーターマークの設定の具体的な実装テクニックを例の形式で分析します。印刷するThinkphp ウォーターマーク機能ですが、左下にしか配置できないことが分かりました。 PHP の透かし機能は依然として非常に簡単です。 最も重要なことは


コードをコピーすることです。 コードは次のとおりです:

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 )

src_im 画像のうち、座標が src_x, src_y から始まり、幅 src_w、高さ src_h の部分を、 の位置にコピーします。 dst_im イメージ。座標は dst_x と dst_y です。 2 つのイメージは、0 ~ 100 の範囲の pct に基づいてマージされます。 pct = 0 の場合、実際には何も行われません。100 の場合、この関数はパレット イメージの imagecopy() とまったく同じになります。トゥルーカラー イメージのアルファ透明度を実装します。

ウォーターマークのデモ画像:

画像の中央にウォーターマークを入れる必要があります。Thinkphp コードを確認してください。実際に作者が死ぬ気で書いたことが分かり、修正は1つだけでした

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

概要: 以上がこの記事の全内容です、皆さんの勉強に少しでもお役に立てれば幸いです。

関連する推奨事項:

マジックメソッドのPHP実装と独立インスタンスと接続インスタンスについて


PHPはフロントエンドにJSONオブジェクトを返します


php

メソッドを実装してファイルのアップロード、ダウンロード、削除

以上がThinkPHP でウォーターマークを入れる方法とウォーターマークの位置を設定する方法 (分析例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。