이전 글에서 "PHP에서 이미지를 확대/축소하고 자르는 방법은?"을 가져왔습니다. (자세한 예) "에서는 PHP에서 그래픽을 확대/축소하고 자르는 방법을 예제를 통해 소개합니다. 이 기사에서는 계속해서 PHP의 그래픽 처리에 대한 지식과 이미지에 워터마크를 추가하는 방법을 살펴봅니다. 모두에게 도움이 되기를 바랍니다!
우리는 일상생활에서 사진 도난을 방지하기 위해 일부 사진에 워터마크가 추가되는 것을 종종 볼 수 있습니다. 예를 들어, 저희 웹사이트에서는 사진 파일을 입력하면 자동으로 워터마크가 추가됩니다. 그러면 이 워터마크 효과는 어떻게 달성되나요? 이미지에 워터마크를 추가하는 효과는 PHP를 통해 얻을 수 있습니다.
이전 글에서 이미지를 잘라 대상 이미지에 배치하는 작업은 워터마크를 추가하는 것과 다소 비슷합니다.
<strong><span style="font-size: 18px;">이미지 복사 병합</span></strong>
기능<strong><span style="font-size: 18px;">imagecopymerge</span></strong>
函数
imagecopymerge函数的语法格式如下:
imagecopymerge($目标图片,$来源图片,$目标开始的x ,$目标开始的y,$来源的x ,$来源的y ,$来源的宽 ,$来源的高 ,$透明度)
其中透明度的值是0-100的整数,透明度的值越大,水印越不透明。
接下来我们通过实例来看一下应该怎样给图片增加水印:
首先准备了一个名为test.png的图片和一个名为logo.png的水印图片放到了我们的根目录里
注意上面这个是示例图片,下面的水印并不是我添加的,是网站自动添加的,为了区分,实例的水印是下面这样的
那接下来,操作如下:
<?php //打开目标图片 $dst = imagecreatefrompng('test.png'); //打开Logo来源图片 $src = imagecreatefrompng('logo.png'); //得到目标图片的宽高 $dst_info = getimagesize('test.png'); //得到logo图片的宽高 $src_info = getimagesize('logo.png'); //放到最右下脚可得出图片水印图片需要开始的位置即: //x点位置:需要大图的宽 - 小图的宽; //y点位置:放大图的高 - 小图的高 $dst_x = $dst_info[0] - $src_info[0]; $dst_y = $dst_info[1] - $src_info[1]; //要将图片加在右下脚 imagecopymerge($dst, $src, $dst_x, $dst_y, 0, 0, $src_info[0], $src_info[1], 50); header('Content-type:image/png'); imagepng($dst); imagedestroy($dst); imagedestroy($src); ?>
输出结果:
由上述结果可以看出,通过imagecopymerge函数添加了一个透明度为50的水印。
拓展知识<strong><span style="font-size: 18px;">imagecopy</span></strong>
函数
不止使用imagecopymerge函数一种方法添加水印,也能够通过 imagecopy()
imagecopy($目标图片, $来源图片,$目标图片x,$目标图片y,$来源图片x,$来源图片y,$来源图片宽,$来源图片高)
먼저 test.png라는 이름의 이미지와 logo.png라는 워터마크 이미지를 준비하여 루트 디렉터리에 배치했습니다
Pay 위 사항 참고하세요 아래 워터마크는 제가 추가한 것이 아니고, 사이트에서 자동으로 추가한 예시 사진입니다. .php.cn/upload/image /420/672/126/1634709760233139.png" title="1634709760233139.png" alt="PHP에서 이미지 워터마크를 추가하는 방법을 이해해야 합니다."/>
이후 작업은 다음과 같습니다.imagesx(resource $image) imagesy(resource $image)
출력 결과:
가능한 대로 위 결과에서 볼 수 있듯이 imagecopymerge 함수를 사용하여 불투명도 50의 워터마크를 추가했습니다.
🎜지식 확장<strong><span style="font-size: 18px;">이미지 복사</span></strong> span>span>
함수🎜🎜 imagecopymerge 함수이지만 imagecopy()
함수를 통해 함수의 일부를 복사할 수도 있습니다. 구문 형식은 다음과 같습니다. 🎜<?php function watermark($img, $watermark, $district = 0,$watermarkquality = 95){ $imginfo = @getimagesize($img); $watermarkinfo = @getimagesize($watermark); $img_w = $imginfo[0]; $img_h = $imginfo[1]; $watermark_w = $watermarkinfo[0]; $watermark_h = $watermarkinfo[1]; if($district == 0) $district = rand(1,9); if(!is_int($district) OR 1 > $district OR $district > 9) $district = 9; switch($district){ case 1: $x = +5; $y = +5; break; case 2: $x = ($img_w - $watermark_w) / 2; $y = +5; break; case 3: $x = $img_w - $watermark_w - 5; $y = +5; break; case 4: $x = +5; $y = ($img_h - $watermark_h) / 2; break; case 5: $x = ($img_w - $watermark_w) / 2; $y = ($img_h - $watermark_h) / 2; break; case 6: $x = $img_w - $watermark_w; $y = ($img_h - $watermark_h) / 2; break; case 7: $x = +5; $y = $img_h - $watermark_h - 5; break; case 8: $x = ($img_w - $watermark_w) / 2; $y = $img_h - $watermark_h - 5; break; case 9: $x = $img_w - $watermark_w - 5; $y = $img_h - $watermark_h - 5; break; } switch ($imginfo[2]) { case 1: $im = @imagecreatefromgif($img); break; case 2: $im = @imagecreatefromjpeg($img); break; case 3: $im = @imagecreatefrompng($img); break; } switch ($watermarkinfo[2]) { case 1: $watermark_logo = @imagecreatefromgif($watermark); break; case 2: $watermark_logo = @imagecreatefromjpeg($watermark); break; case 3: $watermark_logo = @imagecreatefrompng($watermark); break; } if(!$im or !$watermark_logo) return false; $dim = @imagecreatetruecolor($img_w, $img_h); if(@imagecopy($dim, $im, 0, 0, 0, 0,$img_w,$img_h )){ imagecopy($dim, $watermark_logo, $x, $y, 0, 0, $watermark_w, $watermark_h); } $file = dirname($img) . '/w' . basename($img); $result = imagejpeg ($dim,$file,$watermarkquality); imagedestroy($watermark_logo); imagedestroy($dim); imagedestroy($im); if($result){ echo $img.' 水印添加成功'; return; } else { return false; } } $file = 'test.png'; //待加水印的图片地址 $water = 'logo.png'; //水印图片的地址 watermark($file, $water); ?>🎜(x, y) 원본 이미지의 높이가 h이고 대상 이미지의 (x, y)인 직사각형 영역입니다. 🎜🎜🎜PHP에서 Imagesx() 및 Imagesy() 함수를 사용하여 이미지의 너비와 높이를 각각 얻습니다. 구문 형식은 다음과 같습니다. 🎜rrreee🎜예제는 다음과 같습니다. 🎜🎜rrreee🎜출력 결과: 🎜🎜🎜🎜🎜🎜효과는 다음과 같습니다. 🎜🎜🎜🎜🎜추천 학습: "🎜PHP Video Tutorial🎜" 🎜
위 내용은 PHP에서 이미지 워터마크를 추가하는 방법을 이해해야 합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!