zoukankan      html  css  js  c++  java
  • 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);
    }
    

      

  • 相关阅读:
    素数路径Prime Path POJ3126 素数,BFS
    Fliptile POJ3279 DFS
    Find the Multiple POJ1426
    洗牌Shuffle'm Up POJ3087 模拟
    棋盘问题 POJ1321 DFS
    抓住那只牛!Catch That Cow POJ3278 BFS
    Dungeon Master POJ2251 三维BFS
    Splitting into digits CodeForce#1104A
    Ubuntu下手动安装Nvidia显卡驱动
    最大连续子序列和
  • 原文地址:https://www.cnblogs.com/legendheng/p/9130786.html
Copyright © 2011-2022 走看看