七、日期与时间 && 八、图像处理

七、日期与时间

  1. 设置时区
    • date_default_timezone_set():设置时区
  2. 获取当前的 Unix 时间戳
    • time():获取当前的 Unix 时间戳
  3. 获取指定时间的 Unix 时间戳
    • mktime(hour, minute, second, month, day, year):获取指定时间的 Unix 时间戳
  4. 从 Unix 时间戳取得时间日期信息
    • date():格式化一个本地时间/日期
      • date ( string $format [, int $timestamp] ) : string
      • formatY-m-d G:i:s
  5. 获取 Unix 时间戳和微秒级
    • microtime():回当前 Unix 时间戳和微秒数

八、图像处理

  1. 创建图像

  2. 绘制图像

  3. 输出图像

    • header() 函数注意点:在该函数之前,不能输出任何内容
  4. 释放资源

    <?php 
    $width = 100;
    $height = 100;
    header("Content-type:image/jpeg");//默认为header("Content-type:text/html")
    $img = imagecreatetruecolor($width, $height);//新建一个长和高为100的真彩图像。
    $color2 = imagecolorallocate($img, 255, 255, 255);//分配颜色,后面三个参数为RGB
    imagefill($img, 0, 0, $color2);//区域填充,在 image 图像的坐标 x,y(图像左上角为 0, 0)处用 color 颜色执行区域填充(即与 x, y 点颜色相同且相邻的点都会被填充)。
    imagejpeg($img);//输出图象到浏览器或文件
    imagedestroy($img);//释放资源
    ?>
    
  5. 设计验证码

    <?php 
    header("Content-type:image/jpeg");
    $width = 120;
    $height = 40;
    //方法一:利用数组
    $element = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0');
    $string = '';
    for($i=0; $i<5; $i++){
        $string .= $element[rand(0, count($element)-1)];
    }//随机生成五个字符
    //方法二:利用ASCII码
    $string = '';
    for($i=0; strlen($string)<5; $i++){
        $t = rand(48, 122);
        if(($t>=58&$t<=64)|($t>=91&$t<=96)){
            continue;
        }else{
            $string .= chr($t);
        }
    }//随机生成五个字符
    $image = imagecreatetruecolor($width, $height);//新建一个图像
    $colorBg = imagecolorallocate($image, rand(200, 255), rand(200, 255), rand(200, 255));//为一幅图像分配颜色
    $colorBor = imagecolorallocate($image, rand(200, 255), rand(200, 255), rand(200, 255));
    $colorStr = imagecolorallocate($image, rand(100, 200), rand(100, 200), rand(100, 200));
    imagefill($image, 0, 0, $colorBg);//给图片上色
    imagerectangle($image, 0, 0, $width-1, $height-1, $colorBor);//生成一个矩形
    for($i = 0; $i<100; $i++){
        imagesetpixel($image, rand(0, $width-1), rand(0, $height-1), imagecolorallocate($image, 0, 0, 0));//生成一像素的小圆点
    }
    for($i = 0; $i<3; $i++){
        imageline($image, rand(0, $width/2), rand(0, $height/2), rand($width/2, $width), rand($height, $height/2), imagecolorallocate($image, rand(0, 100), rand(0, 100), rand(0, 100)));
    }
    // imagestring($image, 1, rand(0,5), rand(0,5), "ABCD", $colorStr);//水平地画一行字符串
    imagettftext($image, 20, rand(-5, 5), rand(10, 20), rand(30, 35), $colorStr, 'D:\wamp64\www\gd\ARLRDBD.TTF', $string);//用 TrueType 字体向图像写入文本
    imagejpeg($image);//输出图像
    imagedestroy($image);
    ?>
    

    在这里插入图片描述

  6. 水印

    <?php 
    header('Content-type:image/jpeg');
    $image = imagecreatefromjpeg('images\22.jpg');//由文件或 URL 创建一个新图象
    $src_im = imagecreatefromjpeg('images\33.jpg');
    $color = imagecolorallocate($image, 255, 255, 255);
    
    $imageWidth = imagesx($image);//获取图像的长
    $imageHeight = imagesy($image);//获取图像的高
    $src_imWidth = imagesx($src_im);//获取图像的长
    $src_imHeight = imagesy($src_im);//获取图像的高
    //getimagesize('images\22.jpg');//获取图像的大小,返回一个数组,下标0为长,下标1为高
    
    $position = imagettfbbox(100, 45, 'D:\wamp64\www\gd\font\ARLRDBD.TTF', '17046112');//取得使用 TrueType 字体的文本的范围
    $stringWidth = $position[2] - $position[0];// 得到字符串的长
    $stringHeight = $position[3] - $position[5];// 得到字符串的高
    // 文字水印
    imagettftext($image, 100, 45, $imageWidth-$stringWidth*2, $imageHeight-$stringHeight*2, $color, 'D:\wamp64\www\gd\font\ARLRDBD.TTF', '17046112');
    
    /*
     * 图片水印
     * imagecopy($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h);
     * 将 src_im 图像中坐标从 src_x,src_y  开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。
     * $dst_im:目标图像资源
     * $src_im:水印图像资源
     * $dst_x:所要拷贝到目标图像的X坐标
     * $dst_y:所要拷贝到目标图像的Y坐标
     * $src_x:从水印图像的X坐标为$src_x的位置开始拷贝
     * $src_x:从水印图像的Y坐标为$src_y的位置开始拷贝
     * $src_w:索要拷贝的水印图像的长度
     * $src_w:所要拷贝的水印图像的高度
     * imagecopymerge($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $pct);
     * $pct:表示透明度,数值越小越透明
     * */
    imagecopy($image, $src_im, $imageWidth-1-$src_imWidth-30, $imageHeight-1-$src_imHeight-30, 0, 0, $src_imWidth, $src_imHeight);
    imagecopymerge($image, $src_im, $imageWidth-1-$src_imWidth-700, $imageHeight-1-$src_imHeight-500, 0, 0, $src_imWidth, $src_imHeight,40);
    imagejpeg($image);//输出图象到浏览器或文件
    imagedestroy($image);//释放资源
    ?>
    

    在这里插入图片描述

  7. 缩放与裁剪

    <?php 
    header('Content-type:image/jpeg');
    $image = imagecreatefromjpeg('images/22.jpg');
    
    $width=500;
    $imageWidth=imagesx($image);
    $imageHeight=imagesy($image);
    $height=$width/$imageWidth*$imageHeight;
    $dst_image = imagecreatetruecolor($width, $height);
    /*
     * $image1 = imagecopyresampled($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h);
     * imagecopyresampled() 将一幅图像中的一块正方形区域拷贝到另一个图像中,平滑地插入像素值,因此,尤其是,减小了图像的大小而仍然保持了极大的清晰度。 
     * 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, $image, 0, 0, 0, 0, $width, $height, $imageWidth, $imageHeight);
    
    imagejpeg($dst_image);
    imagejpeg($dst_image, 'images/23.jpg');
    imagedestroy($image);
    imagedestroy($dst_image);
    ?>
    

    在这里插入图片描述

发布了10 篇原创文章 · 获赞 0 · 访问量 118

猜你喜欢

转载自blog.csdn.net/ck_15270706753/article/details/105016383