>  기사  >  백엔드 개발  >  ThinkPHP에서 워터마킹 방법 및 워터마크 위치 설정 방법(예시 분석)

ThinkPHP에서 워터마킹 방법 및 워터마크 위치 설정 방법(예시 분석)

墨辰丷
墨辰丷원래의
2018-06-01 09:34:291516검색

이 글은 ThinkPHP에서 워터마크를 인쇄하고 워터마크 위치를 설정하는 방법을 주로 소개하며, thinkPHP의 워터마크 인쇄 및 설정과 관련된 작업 단계와 구체적인 구현 기술을 예제 형식으로 분석합니다.

최근 사용 중인 Thinkphp to print 워터마크 기능은 왼쪽 하단에만 배치할 수 있는 것으로 나타났습니다. PHP 워터마킹 기능은 매우 쉽습니다.

코드 복사를 사용하는 것입니다. 코드는 다음과 같습니다.

bool imagecopymerge (resource $dst_im , resources $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_x 및 dst_y인 dst_im 이미지. 두 이미지는 0~100 범위의 pct를 기준으로 병합됩니다. pct = 0이면 실제로는 아무 작업도 수행하지 않습니다. 100이면 이 함수는 팔레트 이미지의 imagecopy()와 정확히 동일하며 트루컬러 이미지에 대한 알파 투명도를 구현합니다.

워터마크 데모 사진:

사진 중앙에 워터마크를 넣어야 하는데 Thinkphp 코드를 확인해보세요. 실제로 저자가 죽을 때까지 썼다는 것을 알게 되었고, 수정은 한 번밖에 할 수 없었습니다

/**
* 为图片添加水印
* @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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.