美文网首页
开发企业网站11 -- 图片加水印

开发企业网站11 -- 图片加水印

作者: 潘肚饿兵哥哥 | 来源:发表于2019-12-22 17:45 被阅读0次

\color{rgba(254, 67, 101, .8)}{文字水印:}

<?php
    /*
        给图片加水印
        1.添加文字水印
            (1) 要把字体文件复制到放图片的这个文件夹里,例如这里用simhei.ttf字体
        2.添加图片水印
    */

    $filename = '1.jpeg';
    //水印文字
    $text = '这是一个水印';
    
////////////////////////
//先拿到图片
///////////////////////

    //  imagecreatefromstring(); 返回一个图像标识符,其表达了从给定字符串得来的图像。图像格式将自动检测,只要 PHP 支持:JPEG,PNG,GIF,WBMP 和 GD2。就是自动检测图像类型(后缀)
    //    file_get_contents() 把整个文件读入一个字符串中。就是把一个文件打开,变成字符串
    $image = imagecreatefromstring(file_get_contents($filename));

//水印颜色
$color = imagecolorallocate($image, 255, 0, 0);

//水印开始坐标
$x = 0;
$y = 30;

////////////////////////
//然后写字
///////////////////////
imagettftext($image, 30, $x, $y, $color, 'simhei.ttf', $text);




////////////////////////
//最后生成图片
///////////////////////

    //拿到图片后缀
    //strtolower();将后缀全部转为小写,拿到的后缀有可能是大写的,先全部转成大写或小写都可以
    $suffix = strtolower(strrchr($filename, '.'));


    switch($suffix){
        case '.jpg':
        case '.jpeg': 
        //把这两种格式统一写成一种,本身这两个后缀都是同一个格式
        //所以case后面的内容都是一样的,所以第一个case后面不用写
            $func = 'imagejpeg';break;
        case '.gif';
            $func = 'imagegif';break;
        case '.png';
            $func = 'imagepng';break;
    }


    //拿到文件目录,就是存放原图的路径,然后给新图重新命名并添加路径
    //dirname: 取一个文件的目录部分
    //basename :取一个文件的文件部分,可以是去掉目录,也可以是去掉后缀
    //因为原图和修改后的图在同一个文件夹,所以给每一个修改后的图加上一个w_
    $path = dirname($filename);
    $water = $path.'/w_'.basename($filename);


    // 生成目标图片并保存
    //imagejpeg($dst_image, 'thumb2.jpg');如果没有上面的switch,就要这样写
    //判定后,用另一种写法
    //用$thumb将图片名也换掉,并加上路径
    $func($image, $water);
    
    
    
    //销毁资源:
    imagedestroy($image);
?>

\color{rgba(254, 67, 101, .8)}{==================================================}

\color{rgba(254, 67, 101, .8)}{图片水印:}

<?php
//图片缩略:先创建一个小的画布尺寸,然后把要缩的图片按坐标放到这个画布上,最后再把这个画布存起来,就完成缩略图了
//用GD库中的 imagecopyresampled(); 函数
// 这有一个问题,如果画布尺寸和原图尺寸比例不一样,缩小后就会变形(拉伸)

$filename = 'public/uploads/images/20191020/1.jpg';

//getimagesize()函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回FALSE并产生一条E_WARNING级的错误信息。
//把获取到的数组中的值赋给list函数中的变量
list($src_w, $src_h) = getimmagesize($filename);


$per = 0.5;//设置缩放比例:缩小一半

//目标尺寸:如果不在前面设置缩放比例,也可以在这里直接写固定尺寸
//$dst_w = 200;  $dst_h = 300; 但是这样写会变形,要想他不变形,就要算好原图的比例,这里用等比例缩放的方式,计算原图宽高比例然后缩放的方式在2.php
$dst_w = $src_w*$per;
$dst_h = $src_h*$per;


// imagecreatefromstring(); 返回一个图像标识符,其表达了从给定字符串得来的图像。图像格式将自动检测,只要 PHP 支持:JPEG,PNG,GIF,WBMP 和 GD2。就是自动检测图像类型(后缀)
//file_get_contents() 把整个文件读入一个字符串中。就是把一个文件打开,变成字符串
$src_image = imagecreatefromstring(file_get_contents($filename));

//imagecreatetruecolor — 新建一个真彩色图像,返回一个图像标识符,代表一幅幅大小为  x_size 和  y_size 的黑色图像。
$dst_image = imagecreatetruecolor($dst_w, $dst_h);

//从目标的0,0点坐标开始平铺
$dst_x = 0;
$dst_y = 0;


/*
    imagecopyresampled — 重采样拷贝部分图像并调整大小

    imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )

    dst_image
    目标图象连接资源。

    src_image
    源图象连接资源。

    dst_x
    目标(画布的坐标) X 坐标点。

    dst_y
    目标(画布的坐标) Y 坐标点。

    src_x
    源(从原图片的那个位置开始截)的 X 坐标点。

    src_y
    源(从原图片的那个位置开始截)的 Y 坐标点。

    dst_w
    目标宽度。

    dst_h
    目标高度。

    src_w
    源图象的宽度。

    src_h
    源图象的高度。
*/
imagecopyresampled($dst_image, $src_image, $dst_x, $dst_y, 0, 0, $dst_w, $dst_h, $src_w, $src_h);

// 生成目标图片并保存
imagejpeg($dst_image, 'thumb.jpg');

//销毁资源:两个资源,原图像和生成的图像
imagedestroy($src_image);
imagedestroy($dst_image);

?>

\color{rgba(254, 67, 101, .8)}{把图片水印封装成一个函数:}

<?php
    /*
        给图片加水印
        1.添加文字水印
        2.添加图片水印
    */

    $filename = '1.jpeg';
    //水印图片
    $water_filename = 'water.jpg';

    //这是透明度(用于水印的透明度)
    //透明度有些图可能改不了,这跟用的图有关
    //$pct = 80;
    //$position = 1;

    //接收函数返回值
    $ret = water_img($filename, $water_filename, 5, 80);
    //然后将它输出给图片,加了水印的图片就会在浏览器中显示
    echo "<img src='$ret'/>";

    //封装函数: 4个参数
    function water_img($filename, $water_filename, $position=9, $pct=100){
        ////////////////////////
    //先拿到图片
    ///////////////////////

        //  imagecreatefromstring(); 返回一个图像标识符,其表达了从给定字符串得来的图像。图像格式将自动检测,只要 PHP 支持:JPEG,PNG,GIF,WBMP 和 GD2。就是自动检测图像类型(后缀)
        //    file_get_contents() 把整个文件读入一个字符串中。就是把一个文件打开,变成字符串
        //把目标图和原图打开
        $dst_im = imagecreatefromstring(file_get_contents($filename));

        $src_im = imagecreatefromstring(file_get_contents($water_filename));


        //打开一个资源,获取宽度、高度
        $src_w = imagesx($src_im);
        $src_h = imagesx($src_im);
        

        //如果先把原图分成9块,再确决定把水印加在哪一个部分
        //先拿到目标图的大小
        //然后根据原图和水印图的尺寸确定位置
        //最后,如果没有给1-9中的任意一个位置的话,给一个默认值default:从0,0位置开始
        
        //getimagesize()函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回FALSE并产生一条E_WARNING级的错误信息。
        //把获取到的数组中的值赋给list函数中的变量
        list($dst_w, $dst_h) = getimmagesize($filename);

        switch($position){
            case 1://左上角
                //水印图在目标图上的位置
                $dst_x = 0;
                $dst_y = 0;
            break;
            case 2://上居中
                //水印图在目标图上的位置
                $dst_x = ($dst_w-$src_w)/2;
                $dst_y = 0;
            break;
            case 3://右上角
                //水印图在目标图上的位置
                $dst_x = $dst_w-$src_w;
                $dst_y = 0;
            break;
            case 4://左居中
                //水印图在目标图上的位置
                $dst_x = 0;
                $dst_y = ($dst_h-$src_h)/2;
            break;
            case 5://居中
                //水印图在目标图上的位置
                $dst_x = ($dst_w-$src_w)/2;
                $dst_y = ($dst_h-$src_h)/2;
            break;
            case 6://右居中
                //水印图在目标图上的位置
                $dst_x = $dst_w-$src_w;
                $dst_y = ($dst_h-$src_h)/2;
            break;
            case 7://左下角
                //水印图在目标图上的位置
                $dst_x = 0;
                $dst_y = $dst_h-$src_h;
            break;
            case 8://下居中
                //水印图在目标图上的位置
                $dst_x = ($dst_w-$src_w)/2;
                $dst_y = $dst_h-$src_h;
            break;
            case 9://右下角
                //水印图在目标图上的位置
                $dst_x = $dst_w-$src_w;
                $dst_y = $dst_h-$src_h;
            break;
            default:
                $dst_x = 0;
                $dst_y = 0;
        }
        



        //把水印图叠加到原图上,这里0,0是从哪个位置开始截取图像做水印图,一般从00开始
        //后面的$src_w, $src_h
        imagecopymerge($dst_im, $src_im, $dst_x, $dst_y, 0, 0,  $src_w, $src_h, $pct);


    ////////////////////////
    //最后生成图片
    ///////////////////////

        //拿到图片后缀
        //strtolower();将后缀全部转为小写,拿到的后缀有可能是大写的,先全部转成大写或小写都可以
        $suffix = strtolower(strrchr($filename, '.'));


        switch($suffix){
            case '.jpg':
            case '.jpeg': 
                $func = 'imagejpeg';break;//把这两种格式统一写成一种,本身这两个后缀都是同一个格式,所以case后面的内容都是一样的,所以第一个case后面不用写
            case '.gif';
                $func = 'imagegif';break;
            case '.png';
                $func = 'imagepng';break;
        }


        //拿到文件目录,就是存放原图的路径,然后给新图重新命名并添加路径
        //dirname: 取一个文件的目录部分
        //basename :取一个文件的文件部分,可以是去掉目录,也可以是去掉后缀
        //因为原图和修改后的图在同一个文件夹,所以给每一个修改后的图加上一个w_
        $path = dirname($filename);
        $water = $path.'/w_'.basename($filename);


        // 生成目标图片并保存
        //imagejpeg($dst_image, 'thumb2.jpg');如果没有上面的switch,就要这样写
        //判定后,用另一种写法
        //用$thumb将图片名也换掉,并加上路径
        $func($dst_im, $water);
        
        
        
        //销毁资源:
        imagedestroy($dst_im);
        imagedestroy($src_im);
    }
    return $water;

?>

\color{rgba(254, 67, 101, .8)}{==============================}

\color{rgba(254, 67, 101, .8)}{文字水印函数:}

<?php
 
    // $filename = '1.jpeg';
    // $text = '这是一个文字水印';
    // $image = imagecreatefromstring(file_get_contents($filename));

    // $color = imagecolorallocate($image, 255, 0, 0);

    // $x = 0;
    // $y = 30;
    // imagettftext($image, 30, $x, $y, $color, 'simhei.ttf', $text);
    // $suffix = strtolower(strrchr($filename, '.'));
    // switch($suffix){
    //     case '.jpg':
    //     case '.jpeg': 
    //         $func = 'imagejpeg';break;
    //     case '.gif';
    //         $func = 'imagegif';break;
    //     case '.png';
    //         $func = 'imagepng';break;
    // }
    // $path = dirname($filename);
    // $water = $path.'/w_'.basename($filename);
    // $func($image, $water);
    // imagedestroy($image);

    // 将以上代码封装成给图片添加文字水印





    /*
    给图片加水印
    1.添加文字水印
        (1) 要把字体文件复制到放图片的这个文件夹里,例如这里用simhei.ttf字体
    2.添加图片水印
    */

$filename = '1.jpeg';
//水印文字
$text = '这是一个文字水印';

$water = water_text($filename, $text);
//echo "<img src='$water' />";可以在这里输出值查看效果

//angle是水印角度
function water_text($filename, $text, $color='#FF0000', $size=30, $angle=0){
    ////////////////////////
    //先拿到图片
    ///////////////////////

    //  imagecreatefromstring(); 返回一个图像标识符,其表达了从给定字符串得来的图像。图像格式将自动检测,只要 PHP 支持:JPEG,PNG,GIF,WBMP 和 GD2。就是自动检测图像类型(后缀)
    //    file_get_contents() 把整个文件读入一个字符串中。就是把一个文件打开,变成字符串
    $image = imagecreatefromstring(file_get_contents($filename));

    //对颜色的色码格式进行判定,要把16进制的色码转成10进制
    //substr() 函数返回字符串的一部分.这里从第0位取值,只取一位
    //判断有没有#号,如果没有#号,那么代表用户填错格式了,就给一个默认值黑色
    //如果有#号,继续判断颜色值的长度是不是3位或者6位
    //不是就是错的,给默认值黑色
    //如果是3位或者6位
    
    //判断1:是否有#号
    if(substr($color, 0, 1) == '#'){
        //水印颜色
        $color = substr($color, 1);
        //判断2:是否是3位或6位
        if(strlen($color)==3 || strlen($color)==6){
            //判断3:3位或6位分开处理
            if(strlen($color) == 3){
                //str_split 将一个字符串转为数组,并以每一个为单位分割
                $color_arr = str_split($color, 1);
            }else{
                //str_split 将一个字符串转为数组,并以每两个为单位分割
                $color_arr = str_split($color, 2);
            }
            //分割完了之后,把3位的色码变成6位
            //如果$color_arr长度是1,就不用补全
            //如果长度是2,就要补全成为6位,长度是1就不用管了
            foreach($clolr_arr as $k=>$v){
                if(strlen($v)==1){
                    $color_arr[$k] = $v.$v;
                }
            }

            //hexdec 将16进制转成10进制
            $red = hexdec($color_arr[0]);
            $green = hexdec($color_arr[1]);
            $blue = hexdec($color_arr[2]);

            $color = imagecolorallocate($image, $red, $green, $blue);
        }else{
            $color = imagecolorallocate($image, 0, 0, 0);
        }
    }else{
        //水印颜色
        $color = imagecolorallocate($image, 0, 0, 0);
    }

    

    //水印开始坐标
    $x = 0;
    $y = 30;

    ////////////////////////
    //然后写字
    ///////////////////////
    imagettftext($image, $size, $angle, $x, $y, $color, 'simhei.ttf', $text);

    ////////////////////////
    //最后生成图片
    ///////////////////////

    //拿到图片后缀
    //strtolower();将后缀全部转为小写,拿到的后缀有可能是大写的,先全部转成大写或小写都可以
    $suffix = strtolower(strrchr($filename, '.'));

    switch($suffix){
        case '.jpg':
        case '.jpeg': 
        //把这两种格式统一写成一种,本身这两个后缀都是同一个格式
        //所以case后面的内容都是一样的,所以第一个case后面不用写
            $func = 'imagejpeg';break;
        case '.gif';
            $func = 'imagegif';break;
        case '.png';
            $func = 'imagepng';break;
    }


    //拿到文件目录,就是存放原图的路径,然后给新图重新命名并添加路径
    //dirname: 取一个文件的目录部分
    //basename :取一个文件的文件部分,可以是去掉目录,也可以是去掉后缀
    //因为原图和修改后的图在同一个文件夹,所以给每一个修改后的图加上一个w_
    $path = dirname($filename);
    $water = $path.'/w_'.basename($filename);


    // 生成目标图片并保存
    //imagejpeg($dst_image, 'thumb2.jpg');如果没有上面的switch,就要这样写
    //判定后,用另一种写法
    //用$thumb将图片名也换掉,并加上路径
    $func($image, $water);


    //销毁资源:
    imagedestroy($image);
    return $water;
    }


?>

\color{rgba(254, 67, 101, .8)}{给图片加文字水印函数优化:}


    /*
    给图片加水印
    1.添加文字水印
        (1) 要把字体文件复制到放图片的这个文件夹里,例如这里用simhei.ttf字体
    2.添加图片水印
    */

$filename = '1.jpeg';
//水印文字
$text = '这是一个文字水印';

//最后一个参数是九宫格的位置
$water = water_text($filename, $text, '#990081', 2);
//echo "<img src='$water' />";可以在这里输出值查看效果

//angle是水印角度
//$position是是水印加在哪里(九宫格)
function water_text($filename, $text, $color='#FF0000', $position, $size=30, $angle=0){
    ////////////////////////
    //先拿到图片
    ///////////////////////

    //  imagecreatefromstring(); 返回一个图像标识符,其表达了从给定字符串得来的图像。图像格式将自动检测,只要 PHP 支持:JPEG,PNG,GIF,WBMP 和 GD2。就是自动检测图像类型(后缀)
    //    file_get_contents() 把整个文件读入一个字符串中。就是把一个文件打开,变成字符串
    $image = imagecreatefromstring(file_get_contents($filename));

    //首先让三个色默认为0,不是0再在下面做判断
    //如果不写=0,那么下面进行判断的时候,就会写一堆默认值为(0, 0, 0)的情况
    //这就相当于首先默认是黑色,三个0就是黑色
    $red=$green=$blue=0;


    //对颜色的色码格式进行判定,要把16进制的色码转成10进制
    //substr() 函数返回字符串的一部分.这里从第0位取值,只取一位
    //判断有没有#号,如果没有#号,那么代表用户填错格式了,就给一个默认值黑色
    //如果有#号,继续判断颜色值的长度是不是3位或者6位
    //不是就是错的,给默认值黑色
    //如果是3位或者6位
    
    //判断1:是否有#号
    if(substr($color, 0, 1) == '#'){
        //水印颜色
        $color = substr($color, 1);
        //判断2:是否是3位或6位
        if(strlen($color)==3 || strlen($color)==6){
            //判断3:3位或6位分开处理
            if(strlen($color) == 3){
                //str_split 将一个字符串转为数组,并以每一个为单位分割
                $color_arr = str_split($color, 1);
            }else{
                //str_split 将一个字符串转为数组,并以每两个为单位分割
                $color_arr = str_split($color, 2);
            }
            //分割完了之后,把3位的色码变成6位
            //如果$color_arr长度是1,就不用补全
            //如果长度是2,就要补全成为6位,长度是1就不用管了
            foreach($clolr_arr as $k=>$v){
                if(strlen($v)==1){
                    $color_arr[$k] = $v.$v;
                }
            }

            //hexdec 将16进制转成10进制
            $red = hexdec($color_arr[0]);
            $green = hexdec($color_arr[1]);
            $blue = hexdec($color_arr[2]);
        }
    }

    //imagecolorallocate — 为一幅图像分配颜色
    $color = imagecolorallocate($image, $red, $green, $blue);

    //加水印的位置:
    //目标图的宽高已知
    list($dst_w, $dst_h) = getimagesize($filename);
    //水印的宽高计算:
    //mb_strlen 计算字符长度
    //高为0时,用$src_h代替,高为0时,自动加5,宽自动加10,这个数是估计来的,不是固定的。
    //否则水印显示到图片外面去了
    $src_w = ($size+10)*mb_strlen($text, 'utf-8');
    $src_h = $size+5;

    //水印坐标(九宫格)
    
    switch($position){
        case 1://左上角
            //水印图在目标图上的位置
            $dst_x = 0;
            $dst_y = $size;
        break;
        case 2://上居中
            //水印图在目标图上的位置
            $dst_x = ($dst_w-$src_w)/2;
            $dst_y = $src_h;
        break;
        case 3://右上角
            //水印图在目标图上的位置
            $dst_x = $dst_w-$src_w;
            $dst_y = $src_h;
        break;
        case 4://左居中
            //水印图在目标图上的位置
            $dst_x = $src_h;
            $dst_y = ($dst_h-$src_h)/2;
        break;
        case 5://居中
            //水印图在目标图上的位置
            $dst_x = ($dst_w-$src_w)/2;
            $dst_y = ($dst_h-$src_h)/2;
        break;
        case 6://右居中
            //水印图在目标图上的位置
            $dst_x = $dst_w-$src_w;
            $dst_y = ($dst_h-$src_h)/2;
        break;
        case 7://左下角
            //水印图在目标图上的位置
            $dst_x = 0;
            $dst_y = $dst_h-$src_h;
        break;
        case 8://下居中
            //水印图在目标图上的位置
            $dst_x = ($dst_w-$src_w)/2;
            $dst_y = $dst_h-$src_h;
        break;
        case 9://右下角
            //水印图在目标图上的位置
            $dst_x = $dst_w-$src_w;
            $dst_y = $dst_h-$src_h;
        break;
        default:
            $dst_x = 0;
            $dst_y = $src_h;
    }

    ////////////////////////
    //然后写字
    ///////////////////////
    imagettftext($image, $size, $angle, $dst_x, $dst_y, $color, 'simhei.ttf', $text);

    ////////////////////////
    //最后生成图片
    ///////////////////////

    //拿到图片后缀
    //strtolower();将后缀全部转为小写,拿到的后缀有可能是大写的,先全部转成大写或小写都可以
    $suffix = strtolower(strrchr($filename, '.'));

    switch($suffix){
        case '.jpg':
        case '.jpeg': 
        //把这两种格式统一写成一种,本身这两个后缀都是同一个格式
        //所以case后面的内容都是一样的,所以第一个case后面不用写
            $func = 'imagejpeg';break;
        case '.gif';
            $func = 'imagegif';break;
        case '.png';
            $func = 'imagepng';break;
    }


    //拿到文件目录,就是存放原图的路径,然后给新图重新命名并添加路径
    //dirname: 取一个文件的目录部分
    //basename :取一个文件的文件部分,可以是去掉目录,也可以是去掉后缀
    //因为原图和修改后的图在同一个文件夹,所以给每一个修改后的图加上一个w_
    $path = dirname($filename);
    $water = $path.'/w_'.basename($filename);


    // 生成目标图片并保存
    //imagejpeg($dst_image, 'thumb2.jpg');如果没有上面的switch,就要这样写
    //判定后,用另一种写法
    //用$thumb将图片名也换掉,并加上路径
    $func($image, $water);


    //销毁资源:
    imagedestroy($image);
    return $water;
    }

\color{rgba(254, 67, 101, .8)}{=======================================}

\color{rgba(254, 67, 101, .8)}{给图片加文字水印copy来的的写法}
\color{rgba(254, 67, 101, .8)}{1.PHP十六进制颜色转RGB颜色值}

/**
     * 十六进制转RGB
     * 
     * @param string $color 16进制颜色值
     * @return array
     */
    public static function hex2rgb($color) {
        $hexColor = str_replace('#', '', $color);
        $lens = strlen($hexColor);
        if ($lens != 3 && $lens != 6) {
            return false;
        }
        $newcolor = '';
        if ($lens == 3) {
            for ($i = 0; $i < $lens; $i++) {
                $newcolor .= $hexColor[$i] . $hexColor[$i];
            }
        } else {
            $newcolor = $hexColor;
        }
        $hex = str_split($newcolor, 2);
        $rgb = [];
        foreach ($hex as $key => $vls) {
            $rgb[] = hexdec($vls);
        }
        return $rgb;
    }

————————————————
版权声明:本文为CSDN博主「helcyon」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/helcyon/article/details/80855153

\color{rgba(254, 67, 101, .8)}{=======================================}

\color{rgba(254, 67, 101, .8)}{2.PHP RGB颜色和十六进制颜色互转}

/**
     * RGB转 十六进制
     * @param $rgb RGB颜色的字符串 如:rgb(255,255,255);
     * @return string 十六进制颜色值 如:#FFFFFF
     */
    function RGBToHex($rgb){
        $regexp = "/^rgb\(([0-9]{0,3})\,\s*([0-9]{0,3})\,\s*([0-9]{0,3})\)/";
        $re = preg_match($regexp, $rgb, $match);
        $re = array_shift($match);
        $hexColor = "#";
        $hex = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
        for ($i = 0; $i < 3; $i++) {
            $r = null;
            $c = $match[$i];
            $hexAr = array();
            while ($c > 16) {
                $r = $c % 16;
                $c = ($c / 16) >> 0;
                array_push($hexAr, $hex[$r]);
            }
            array_push($hexAr, $hex[$c]);
            $ret = array_reverse($hexAr);
            $item = implode('', $ret);
            $item = str_pad($item, 2, '0', STR_PAD_LEFT);
            $hexColor .= $item;
        }
        return $hexColor;
    }
    /**
     * 十六进制 转 RGB
     */
    function hex2rgb($hexColor) {
        $color = str_replace('#', '', $hexColor);
        if (strlen($color) > 3) {
            $rgb = array(
                'r' => hexdec(substr($color, 0, 2)),
                'g' => hexdec(substr($color, 2, 2)),
                'b' => hexdec(substr($color, 4, 2))
            );
        } else {
            $color = $hexColor;
            $r = substr($color, 0, 1) . substr($color, 0, 1);
            $g = substr($color, 1, 1) . substr($color, 1, 1);
            $b = substr($color, 2, 1) . substr($color, 2, 1);
            $rgb = array(
                'r' => hexdec($r),
                'g' => hexdec($g),
                'b' => hexdec($b)
            );
        }
        return $rgb;
    }
————————————————
版权声明:本文为CSDN博主「二東」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/shaerdong/article/details/46805807

相关文章

网友评论

      本文标题:开发企业网站11 -- 图片加水印

      本文链接:https://www.haomeiwen.com/subject/rjjwnctx.html