사진에 워터마크 추가LOGIN

사진에 워터마크 추가

1. 워터마크 기능 추가

<?php
function watermark($source,$water,$postion=4,$path=''){
    //设置水印图片名称前缀
    $waterPrefix='water_';
    //图片类型和对应创建画布资源的函数名
    $from=array(
        'image/gif'=>'imagecreatefromgif',
        'image/png'=>'imagecreatefrompng',
        'image/jpeg'=>'imagecreatefromjpeg',
    );
    //图片类型和对应生成图片的函数名
    $to=array(
        'image/gif'=>'imagegif',
        'image/png'=>'imagepng',
        'image/jpeg'=>'imagejpeg',
    );}

2. 사진 정보 가져오기

<?php
//获取原图和 水印图片信息数组
$src_info=getimagesize($source);
$water_info=getimagesize($water);
//从数组中获取原图和水印图片的宽和高
list($src_w,$src_h,$src_mime)=$src_info;
list($wat_w,$wat_h,$wat_mime)=$water_info;
//获取各图片对应的创建画布函数名
$src_create_fname=$from[$src_info['mime']];
$wat_create_fname=$from[$water_info['mime']];
//使用可变函数来创建画布资源
$src_img=$src_create_fname($source);
$wat_img=$wat_create_fname($water);

3. 워터마크 위치 설정

<?php
//水印位置
switch($postion){
    case 1://左上
        $src_x=0;
        $src_y=0;
        break;
    case 2://右上
        $src_x=$src_w-$wat_w;
        $src_y=0;
        break;
    case 3://中间
        $src_x=($src_w-$wat_w)/2;
        $src_y=($src_h-$wat_h)/2;
        break;
    case 4://左下
        $src_x=0;
        $src_y=$src_h-$wat_h;
        break;
    default ://右下
        $src_x=$src_w-$wat_w;
        $src_y=$src_h-$wat_h;
        break;
}

4.

rreee

5, 워터마크가 있는 그림을 지정된 디렉터리에 출력합니다.

<?php
//添加水印
/**
 * @param resource $src_img 原图像资源
 * @param resource $wat_img 水印图像资源
 * @param int $src_x 水印图片在原图像中的横坐标
 * @param int $src_y 水印图片在原图像中的纵坐标
 * @param int $wat_w 水印图片的宽
 * @param int $wat_h 水印图片的高
 */
imagecopy($src_img,$wat_img,$src_x,$src_y,0,0,$wat_w,$wat_h);

6, 함수를 호출합니다.

<?php
//生成带水印的图片路径
$waterfile=$path.$waterPrefix.$source;
//获取输出图片格式的函数名
$generate_fname=$to[$src_info['mime']];
//判断将添加水印后的图片输出到指定目录是否正确
if($generate_fname($src_img,$waterfile)){
    //有条理地输出原图像与加水印后的图像
    echo "<table><tr><th>为图片添加水印</th></tr>";
    echo "<tr><td>原图像:</td><td><img src='".$source."'/></td></tr>";
    echo "<tr><td>加水印后:</td><td><img src='".$waterfile."'/></td></tr></table>";
}else{
    echo "输出水印图片到指定目录出错";
    return false;
}

전체 코드 표시:

watermark.php:

<?php
//使用变量保存原图片与水印图片路径
$source='test.jpg';
$water='C:\Users\Administrator\Desktop.png';
//调用函数,显示原图与添加水印后的图片
watermark($source,$water);

효과 표시:

微信图片_20180301090151.png


질문: 반투명 워터마크와 텍스트 워터마크를 어떻게 설정하나요? (다음 편에서 소개하겠습니다)


다음 섹션
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/2/28 0028 * Time: 下午 4:37 */ function watermark($source,$water,$postion=4,$path=''){ //设置水印图片名称前缀 $waterPrefix='water_'; //图片类型和对应创建画布资源的函数名 $from=array( 'image/gif'=>'imagecreatefromgif', 'image/png'=>'imagecreatefrompng', 'image/jpeg'=>'imagecreatefromjpeg', ); //图片类型和对应生成图片的函数名 $to=array( 'image/gif'=>'imagegif', 'image/png'=>'imagepng', 'image/jpeg'=>'imagejpeg', ); //获取原图和 水印图片信息数组 $src_info=getimagesize($source); $water_info=getimagesize($water); //从数组中获取原图和水印图片的宽和高 list($src_w,$src_h,$src_mime)=$src_info; list($wat_w,$wat_h,$wat_mime)=$water_info; //获取各图片对应的创建画布函数名 $src_create_fname=$from[$src_info['mime']]; $wat_create_fname=$from[$water_info['mime']]; //使用可变函数来创建画布资源 $src_img=$src_create_fname($source); $wat_img=$wat_create_fname($water); //水印位置 switch($postion){ case 1://左上 $src_x=0; $src_y=0; break; case 2://右上 $src_x=$src_w-$wat_w; $src_y=0; break; case 3://中间 $src_x=($src_w-$wat_w)/2; $src_y=($src_h-$wat_h)/2; break; case 4://左下 $src_x=0; $src_y=$src_h-$wat_h; break; default ://右下 $src_x=$src_w-$wat_w; $src_y=$src_h-$wat_h; break; } //添加水印 /** * @param resource $src_img 原图像资源 * @param resource $wat_img 水印图像资源 * @param int $src_x 水印图片在原图像中的横坐标 * @param int $src_y 水印图片在原图像中的纵坐标 * @param int $wat_w 水印图片的宽 * @param int $wat_h 水印图片的高 */ imagecopy($src_img,$wat_img,$src_x,$src_y,0,0,$wat_w,$wat_h); //生成带水印的图片路径 $waterfile=$path.$waterPrefix.$source; //获取输出图片格式的函数名 $generate_fname=$to[$src_info['mime']]; //判断将添加水印后的图片输出到指定目录是否正确 if($generate_fname($src_img,$waterfile)){ //有条理地输出原图像与加水印后的图像 echo "<table><tr><th>为图片添加水印</th></tr>"; echo "<tr><td>原图像:</td><td><img src='".$source."'/></td></tr>"; echo "<tr><td>加水印后:</td><td><img src='".$waterfile."'/></td></tr></table>"; }else{ echo "输出水印图片到指定目录出错"; return false; } } //使用变量保存原图片与水印图片路径 $source='test.jpg'; $water='C:\Users\Administrator\Desktop\2.png'; //调用函数,显示原图与添加水印后的图片 watermark($source,$water); ?>
코스웨어