• php缩放处理png和jpg图片


    本例子介绍使用php自带的GD库对png和jpg图片进行放大和缩小处理

    <?php
    $target_width = 120; //目标图片宽度 $target_height = 150; //目标图片高度 $target_img = 'me.jpg'; //剪切图片 deal($target_width,$target_height,$target_img);  //调用主函数

    主函数 

    /**
     *主函数: 获取图片信息,准备参数
     */
    function deal($target_width,$target_height,$target_img){
        $img_info=getimagesize($target_img);  // 获取原图尺寸
    
        $original_width=$img_info[0];       //原图片宽度
        $original_height=$img_info[1];       //原图片高度
        $original_mime=$img_info['mime'];
        $type=substr($original_mime,6);       //原本$original_mime值为'image/类型',通过从第六位字符开始截取得到图片类型
    
    
        $target_scale = $target_height/$target_width; //目标图像长宽比
    
        $original_scale = $original_height/$original_width; // 原图片长宽比
    
        if ($original_scale>=$target_scale){  // 过高
            $w = intval($src_w);
            $h = intval($target_scale*$w);
    
            $x = 0;
            $y = ($original_height - $h)/3;
        } else {                              // 过宽
            $h = intval($original_height);
            $w = intval($h/$target_scale);
    
            $x = ($original_width - $w)/2;
            $y = 0;
        }
    
        switch($type){
            case 'jpeg':
                dealjpg($target_img, $w, $h,$x, $y, $original_width, $original_height, $target_width, $target_height);  //调用处理jpg函数
                break;
            case 'png':
                dealpng($target_img, $w, $h,$x, $y, $original_width, $original_height, $target_width, $target_height); //调用处理png函数
                break;
            default:
                echo "请确认需要处理图片类型是否正确";
                break;
        }
    }
    

     

    处理jpg函数 

    /**
     * 处理jpg函数
     */
    function dealjpg($target_img, $w, $h,$x, $y, $original_width, $original_height, $target_width, $target_height){
        // 剪裁
        $source=imagecreatefromjpeg($target_img);  //创建一个新图象
    
        $croped=imagecreatetruecolor($w, $h);      //新建一个真彩色图像
        imagecopy($croped, $source, 0, 0, $x, $y, $original_width, $original_height); //拷贝图像的一部分
    
        // 缩放
        $scale = $target_width / $w;
        $target = imagecreatetruecolor($target_width, $target_height);   //新建一个真彩色图像
        $final_w = intval($w * $scale);
        $final_h = intval($h * $scale);
        imagecopyresampled($target, $croped, 0, 0, 0, 0, $final_w,$final_h, $w, $h);    //重采样拷贝部分图像并调整大小
    
        // 保存
        $timestamp = time();
        imagejpeg($target, "$timestamp.jpg");
    
        imagedestroy($target);
    }
    

      

     处理png函数

    /**
     * 处理png函数
     */
    function dealpng($target_img,$w,$h,$x,$y,$original_width,$original_height,$target_width,$target_height){
        // 剪裁
        $source=imagecreatefrompng($target_img);
    
        $croped=imagecreatetruecolor($w, $h);      //新建一个真彩色图像
        imagecopy($croped, $source, 0, 0, $x, $y, $original_width, $original_height); //拷贝图像的一部分
    
        // 缩放
        $scale = $target_width / $w;
        $target = imagecreatetruecolor($target_width, $target_height);   //新建一个真彩色图像
        $final_w = intval($w * $scale);
        $final_h = intval($h * $scale);
        imagecopyresampled($target, $croped, 0, 0, 0, 0, $final_w,$final_h, $w, $h);    //重采样拷贝部分图像并调整大小
    
        // 保存
        $timestamp = time();
    
        imagepng($target, "$timestamp.png");
        imagedestroy($target);
    }
    

      

  • 相关阅读:
    庆祝一下开通了第一条博客!
    查看树莓派温度
    Ubuntu Server for Raspberry Pi部署Jenkins
    acme.sh部署RSA、ECC双证书(使用阿里云API)
    Ubuntu Server 20.04换用阿里源
    ESP32使用NTP同步时间
    C语言的可变参数函数
    一种Θ(1)的计算32位整数二进制中1的个数的方法
    CentOS 8安装Docker
    CentOS 8搭建LNMP + WordPress(三)
  • 原文地址:https://www.cnblogs.com/legendheng/p/9130786.html
Copyright © 2020-2023  润新知