• 技术文章 >后端开发 >PHP问题

    php裁切图片步骤是什么

    藏色散人藏色散人2021-11-30 10:20:06原创1873

    php裁切图片步骤:1、创建一个PHP示例文件;2、使用“function imageCropper(){...}”方法实现图片不变型裁剪;3、通过“function imageZoom(){...}”方法实现图片按比例裁剪即可。

    php入门到就业线上直播课:进入学习

    本文操作环境:windows7系统、PHP7.4版、DELL G3电脑

    php裁切图片步骤是什么?

    PHP实现图片不变型裁剪及图片按比例裁剪的方法

    本文实例讲述了PHP实现图片不变型裁剪及图片按比例裁剪的方法。分享给大家供大家参考,具体如下:

    图片不变型裁剪

    <?php
    /**
     * imageCropper
     * @param string $source_path
     * @param string $target_width
     * @param string $target_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){
        // image-to-height
        $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){
        //image-to-widht
        $cropped_width = $source_height / $target_ratio;
        $cropped_height = $source_height;
        $source_x = ($source_width - $cropped_width) / 2;
        $source_y = 0;
      }else{
        //image-size-ok
        $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 ;
          break;
      }
      $target_image = imagecreatetruecolor($target_width, $target_height);
      $cropped_image = imagecreatetruecolor($cropped_width, $cropped_height);
      // copy
      imagecopy($cropped_image, $source_image, 0, 0, $source_x, $source_y, $cropped_width, $cropped_height);
      // zoom
      imagecopyresampled($target_image, $cropped_image, 0, 0, 0, 0, $target_width, $target_height, $cropped_width, $cropped_height);
      header('Content-Type: image/jpeg');
      imagejpeg($target_image);
      imagedestroy($source_image);
      imagedestroy($target_image);
      imagedestroy($cropped_image);
    }
    $filename = "8fcb7a0831b79c61.jpg";
    imageCropper($filename,200,200);
    ?>

    图片按比例裁剪

    <?php
    /**
     * imageZoom
     * @param string $file
     * @param double $zoom
     */
    function imageZoom($filename,$zoom=0.6){
      //baseinfo
      $sourceImageInfo = getimagesize($filename);
      $sourceWidth = $sourceImageInfo[0];
      $sourceHeight = $sourceImageInfo[1];
      $sourceMine = $sourceImageInfo['mime'];
      $sourceRatio = $sourceWidth/$sourceHeight;
      $sourceX = 0;
      $sourceY = 0;
      //zoom
      $targetRatio = $zoom;
      //target-widht-height
      $targetWidth = $sourceWidth*$targetRatio;
      $targetHeight = $sourceHeight*$targetRatio;
      //init-params
      $sourceImage = null;
      switch($sourceMine){
        case 'image/gif':
          $sourceImage = imagecreatefromgif($filename);
          break;
        case 'image/jpeg':
          $sourceImage = imagecreatefromjpeg($filename);
          break;
        case 'image/png':
          $sourceImage = imagecreatefrompng($filename);
          break;
        default:
          return ;
          break;
      }
      //temp-target-image
      $tempSourceImage = imagecreatetruecolor($sourceWidth, $sourceHeight);
      $targetImage = imagecreatetruecolor($targetWidth,$targetHeight);
      //copy
      imagecopy($tempSourceImage, $sourceImage, 0, 0, $sourceX, $sourceY, $sourceWidth, $sourceHeight);
      //zoom
      imagecopyresampled($targetImage, $tempSourceImage, 0, 0, 0, 0, $targetWidth, $targetHeight, $sourceWidth, $sourceHeight);
      //header
      header('Content-Type: image/jpeg');
      //image-loading
      imagejpeg($targetImage);
      //destroy
      imagedestroy($tempSourceImage);
      imagedestroy($sourceImage);
      imagedestroy($targetImage);
    }
    $filename = "8fcb7a0831b79c61.jpg";
    imageZoom($filename);
    ?>

    推荐学习:《PHP视频教程

    以上就是php裁切图片步骤是什么的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:php 裁切
    上一篇:php二维数组怎么转换为字符串 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• PHP Imagick完美实现图片裁切、生成缩略图、添加水印• PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF• PHP图像裁剪缩略裁切类源码及使用方法• PHP图片自动裁切
    1/1

    PHP中文网