• 技术文章 >后端开发 >php教程

    php如何使用等比例缩放图片实例代码

    怪我咯怪我咯2017-07-10 11:48:40原创647
    主要介绍了如何使用php等比例缩放图片,可以对原图片提出缩放要求的宽度、缩放的长度.

    本文介绍了PHP实现图片压缩方法,读者可以根据具体应用参考或加以改进,直接上代码,imgzip($src,$newwid,$newhei)这个函数带进去的分别是原图片、缩放要求的宽度、缩放的长度。

    <?php 
    //压缩图片 缩略图
    $src= "xiezheng.jpg";
    $newwid=640;
    $newhei= 480;
    function imgzip($src,$newwid,$newhei){
     $imgInfo = getimagesize($src);
    
     $imgType = image_type_to_extension($imgInfo[2], false);
    
     $fun = "imagecreatefrom{$imgType}";
    //声明图片 打开图片 在内存中
     $image = $fun($src);
    //方便配置长度宽度、高度,设置框为变量wid,高度为hei
     $wid=$imgInfo[0];
     $hei=$imgInfo[1];
    //判断长度和宽度,以方便等比缩放,规格按照500, 320
     if($wid>$hei){
     $wid=$newwid;
     $hei=$newwid/($wid/$hei);
     }else {
     $wid = $newhei * ($wid / $hei);
     $hei = $newhei;
     }
    //在内存中建立一张图片
     $images2 = imagecreatetruecolor($newwid, $newhei); //建立一个500*320的图片
    
    //将原图复制到新建图片中
    //imagecopyresampled($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h)
    
     imagecopyresampled($images2, $image, 0, 0, 0, 0, $wid,$hei, $imgInfo[0],$imgInfo[1]);
    //销毁原始图片
     imagedestroy($image);
    //直接输出图片文件
    
     header("Content-type: ".$imgInfo['mime']);
     imagejpeg($images2);
    //保存图片 到新文件
     imagejpeg($images2, 'new.jpg', 100); //10代码输出图片的质量 0-100 100质量最高
    //销毁
     imagedestroy($images2);
    }
    imgzip($src,$newwid,$newhei);
    ?>

    下面这篇文章给大家分享的是使用php实现的等比例缩放图片及剪切图片的代码,非常的简单实用,附上用法,有需要的小伙伴可以参考下。

    php等比例缩放图片及剪切图片代码分享

    /**
     * 图片缩放函数(可设置高度固定,宽度固定或者最大宽高,支持gif/jpg/png三种类型)
     * Author : Specs
     *
     * @param string $source_path 源图片
     * @param int $target_width 目标宽度
     * @param int $target_height 目标高度
     * @param string $fixed_orig 锁定宽高(可选参数 width、height或者空值)
     * @return string
     */
    function myImageResize($source_path, $target_width = 200, $target_height = 200, $fixed_orig = ''){
      $source_info = getimagesize($source_path);
      $source_width = $source_info[0];
      $source_height = $source_info[1];
      $source_mime = $source_info['mime'];
      $ratio_orig = $source_width / $source_height;
      if ($fixed_orig == 'width'){
        //宽度固定
        $target_height = $target_width / $ratio_orig;
      }elseif ($fixed_orig == 'height'){
        //高度固定
        $target_width = $target_height * $ratio_orig;
      }else{
        //最大宽或最大高
        if ($target_width / $target_height > $ratio_orig){
          $target_width = $target_height * $ratio_orig;
        }else{
          $target_height = $target_width / $ratio_orig;
        }
      }
      switch ($source_mime){
        case 'image/gif':
          $source_image = imagecreatefromgif($source_path);
          break;
         
        case 'image/jpeg':
          $source_image = imagecreatefromjpeg($source_path);
          break;
         
        case 'image/png':
          $source_image = imagecreatefrompng($source_path);
          break;
         
        default:
          return false;
          break;
      }
      $target_image = imagecreatetruecolor($target_width, $target_height);
      imagecopyresampled($target_image, $source_image, 0, 0, 0, 0, $target_width, $target_height, $source_width, $source_height);
      //header('Content-type: image/jpeg');
      $imgArr = explode('.', $source_path);
      $target_path = $imgArr[0] . '_new.' . $imgArr[1];
      imagejpeg($target_image, $target_path, 100);
    }

    用法:

    myImageResize($filename, 200, 200); //最大宽高

    myImageResize($filename, 200, 200, 'width'); //宽度固定

    myImageResize($filename, 200, 200, 'height'); //高度固定

    剪切图片为固定大小:

    function imagecropper($source_path, $target_width, $target_height){
      $source_info = getimagesize($source_path);
      $source_width = $source_info[0];
      $source_height = $source_info[1];
      $source_mime = $source_info['mime'];
      $source_ratio = $source_height / $source_width;
      $target_ratio = $target_height / $target_width;
       
      // 源图过高
      if ($source_ratio > $target_ratio){
        $cropped_width = $source_width;
        $cropped_height = $source_width * $target_ratio;
        $source_x = 0;
        $source_y = ($source_height - $cropped_height) / 2;
      }elseif ($source_ratio < $target_ratio){ // 源图过宽
        $cropped_width = $source_height / $target_ratio;
        $cropped_height = $source_height;
        $source_x = ($source_width - $cropped_width) / 2;
        $source_y = 0;
      }else{ // 源图适中
        $cropped_width = $source_width;
        $cropped_height = $source_height;
        $source_x = 0;
        $source_y = 0;
      }
       
      switch ($source_mime){
        case 'image/gif':
          $source_image = imagecreatefromgif($source_path);
          break;
         
        case 'image/jpeg':
          $source_image = imagecreatefromjpeg($source_path);
          break;
         
        case 'image/png':
          $source_image = imagecreatefrompng($source_path);
          break;
         
        default:
          return false;
          break;
      }
       
      $target_image = imagecreatetruecolor($target_width, $target_height);
      $cropped_image = imagecreatetruecolor($cropped_width, $cropped_height);
       
      // 裁剪
      imagecopy($cropped_image, $source_image, 0, 0, $source_x, $source_y, $cropped_width, $cropped_height);
      // 缩放
      imagecopyresampled($target_image, $cropped_image, 0, 0, 0, 0, $target_width, $target_height, $cropped_width, $cropped_height);
      $dotpos = strrpos($source_path, '.');
      $imgName = substr($source_path, 0, $dotpos);
      $suffix = substr($source_path, $dotpos);
      $imgNew = $imgName . '_small' . $suffix;
      imagejpeg($target_image, $imgNew, 100);
      imagedestroy($source_image);
      imagedestroy($target_image);
      imagedestroy($cropped_image);
    }

    以上就是php如何使用等比例缩放图片实例代码的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php 图片 缩放
    上一篇:php 面向对象中常用的关键字和魔术方法详解 下一篇:php 等比例缩放图片的实现方法
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• PHP如何使用xlswriter进行大数据的导入导出?(详解)• 9段PHP实用功能的代码推荐_PHP• 解密ThinkPHP3.1.2版本之模板继承_PHP• php通过字符串调用函数示例_PHP• 浅析php变量作用域的一些问题_PHP
    1/1

    PHP中文网