php gd图像操作

裁剪图片

<?php
    /**
     * 处理二维码图片
     * @param  string $imgsrc    二维码路径
     * @param  string $imgwidth  二维码宽
     * @param  string $imgheight 二维码高
     * @param  int $time      时间戳,用户名
     * @return string         返回新的名字
     */
    function resizejpg($imgsrc,$imgwidth,$imgheight,$time)
    {
        //$imgsrc jpg格式图像路径 $imgdst jpg格式图像保存文件名 $imgwidth要改变的宽度 $imgheight要改变的高度
        //取得图片的宽度,高度值
        $arr = getimagesize($imgsrc);
        header("Content-type: image/jpg");
        $imgWidth = $imgwidth;
        $imgHeight = $imgheight;
        $image = imagecreatetruecolor($imgWidth, $imgHeight);
        $imgsrc = imagecreatefromjpeg($imgsrc);
        
        imagecopyresampled($image, $imgsrc, 0, 0, 0, 0,$imgWidth,$imgHeight,$arr[0], $arr[1]);//复制图片
        $name= $time.".jpg";
        Imagejpeg($image,$name);//生成$name图片
        
        $image = imagecreatefromjpeg($name);//创建
        imagejpeg($image, null);//打开
        imagedestroy ($image);//销毁
    }

resizejpg('test.jpg',30,30,5555);
exit;

 

缩略图

<?php
    /*
    步骤:
     1.打开图片源文件资源
     2.获得源文件的宽高
     3.使用固定的公式计算新的宽高
     4.生成目标图像资源
     5.进行缩放
     6.保存图像
     7.释放资源
     */
    //1.打开图片源文件资源
    $im = imagecreatefromjpeg('./test.jpg');

    //2.获得源文件的宽高
    $fx = imagesx($im); // 获取宽度
    $fy = imagesy($im); // 获取高度


    //3.使用固定的公式计算新的宽高
    $sx = $fx/2;
    $sy = $fy/2;
    //4.生成目标图像资源
    $small = imagecreatetruecolor($sx,$sy);


    //5.进行缩放
    imagecopyresampled($small,$im,0,0,0,0,$sx,$sy,$fx,$fy);

    //6.保存图像
    if(imagejpeg($small,'./sbg.jpg')) {
     echo '保存成功';
    } else {
         echo '保存失败';
    }
    //7.释放资源
    imagedestroy($im);
    imagedestroy($small);

 

水印

<?php 
    /*
    步骤:
        1.分别创建大小图画布并获取它们的宽高
        2.添加文字水印
        3.执行图片水印处理
        4.输出
        5.销毁画布
     */
    //1.分别创建大小图画布并获取它们的宽高
    $big = imagecreatefromjpeg('./test.jpg');
    $bx = imagesx($big);
    $by = imagesy($big);

    $small = imagecreatefrompng('./tu.png');
    $sx = imagesx($small);
    $sy = imagesy($small);


    //2.添加水印文字
    $blue = imagecolorallocate($big,0,0,255);
    imagettftext($big,16,0,100,100,$blue,'./msyh.ttf','骄傲的少年');

    //3.执行图片水印处理
    imagecopymerge($big,$small,$bx-$sx,0,0,0,$sx,$sy,37);

    
    //4.输出到浏览器
    header('content-type: image/jpeg');
    imagejpeg($big);
//6.保存图像
    if(imagejpeg($big,'./test.jpg')) {
     echo '保存成功';
    } else {
         echo '保存失败';
    }
    //5.销毁画布
    imagedestroy($big);
    imagedestroy($small);

验证码

<?php 
    /*
    步骤:
        1.创建画布
        2.造颜料
        3.填充背景颜色
        4.画干扰点
        5.画噪点
        6.写字符串
        7.输出图片
        8.销毁画布
     */
    //1.创建画布
    $im=imagecreatetruecolor(50, 30);

    //2.造颜料
    $gray = imagecolorallocate($im,30,30,30);
    $red = imagecolorallocate($im,255,0,0);
    $blue = imagecolorallocate($im, 100, 255, 255);

    //3.填充背景颜色  
    imagefill($im,0,0,$blue);

    //4.画干扰点
    for ($i=0; $i <4 ; $i++) { 
         imageline($im, rand(0,20),0,100,rand(0,60),$red);
    }

    //5.画噪点   
        for($i=0;$i<100;$i++){   
            imagesetpixel($im,rand(0,50),rand(0,30),$gray);   
        } 

    //6.写字符串
    $str=substr(str_shuffle('ABCDEFGHIJKMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789'),0,4);
    imagestring($im,5,5,5,$str,$red);
    
    //7.输出图片   
        header('content-type:image/png');   
        imagepng($im); 

        //8.销毁画布
        imagedestroy($im);


?>

 

posted on 2017-12-15 11:51  小乔流水人家  阅读(354)  评论(0)    收藏  举报

导航