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

5年以前  |  阅读数:230 次  |  编程语言: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分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
贪吃蛇
文件下载
双位运算符
发送邮件
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
提取后缀名
年的日历图
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例