<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. php語言

    php生成縮略圖的兩種方法

    時間:2025-02-12 03:05:21 php語言 我要投稿

    php生成縮略圖的兩種方法

      在php中如果要生成縮略圖有什么辦法呢?以下是小編整理的兩種方法,希望對大家有用,更多消息請關注應屆畢業生網。
      核心代碼如下
      public function getImage(){
      // create instance
      $basePath = base_path('public/');
      $md5 = 'b8c3bf0b10a81c5b6a98c527868a0000';
      $sub1 = substr($md5, 0, 1);
      $sub2 = substr($md5, 1, 2);
      $subPath = sprintf("image/%s/%s/%s%s.jpg", $sub1, $sub2, $md5, '300x300');
      $sourcePath = sprintf("image/%s/%s/%s.jpg", $sub1, $sub2, $md5);
      //截成100x80的縮略圖
      //$image = $this->getCropper($basePath.$sourcePath,$basePath.$subPath, 300, 300);
      $image = $this->getCrops($basePath.$sourcePath,$basePath.$subPath, 300, 300);
      }
      //生成縮略圖
      function getCropper($source_path,$NewImagePath, $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);
      header('Content-Type: image/jpeg');
      imagejpeg($target_image,$NewImagePath,100);
      imagedestroy($source_image);
      imagedestroy($target_image);
      imagedestroy($cropped_image);
      }
      //生成縮略圖,填充白邊
      function getCrops($src_path,$NewImagePath,$width,$height){
      //源圖對象
      $src_image = imagecreatefromstring(file_get_contents($src_path));
      $source_info   = getimagesize($src_path);
      $source_mime   = $source_info['mime'];
      $src_width = imagesx($src_image);
      $src_height = imagesy($src_image);
      switch ($source_mime)
      {
      case 'image/gif':
      $src_image = imagecreatefromgif($src_path);
      break;
      case 'image/jpeg':
      $src_image = imagecreatefromjpeg($src_path);
      break;
      case 'image/png':
      $src_image = imagecreatefrompng($src_path);
      break;
      default:
      return false;
      break;
      }
      //生成等比例的縮略圖
      //$tmp_image_width = 0;
      //$tmp_image_height = 0;
      if ($src_width / $src_height >= $width / $height) {
      $tmp_image_width = $width;
      $tmp_image_height = round($tmp_image_width * $src_height / $src_width);
      } else {
      $tmp_image_height = $height;
      $tmp_image_width = round($tmp_image_height * $src_width / $src_height);
      }
      $tmpImage = imagecreatetruecolor($tmp_image_width, $tmp_image_height);
      imagecopyresampled($tmpImage, $src_image, 0, 0, 0, 0, $tmp_image_width, $tmp_image_height, $src_width, $src_height);
      //添加白邊
      $final_image = imagecreatetruecolor($width, $height);
      $color = imagecolorallocate($final_image, 255, 255, 255);
      imagefill($final_image, 0, 0, $color);
      $x = round(($width - $tmp_image_width) / 2);
      $y = round(($height - $tmp_image_height) / 2);
      imagecopy($final_image, $tmpImage, $x, $y, 0, 0, $tmp_image_width, $tmp_image_height);
      //輸出圖片
      header('Content-Type: image/jpeg');
      imagejpeg($final_image,$NewImagePath,100);
      imagedestroy($src_image);
      imagedestroy($final_image);
      }

    【php生成縮略圖的兩種方法】相關文章:

    php生成縮略圖的兩種方法(代碼)08-08

    PHP生成縮略圖的方法03-17

    PHP生成縮略圖的類的方法07-11

    php生成圖片縮略圖的方法06-06

    php上傳圖片生成縮略圖07-31

    php生成高清縮略圖實例08-12

    php生成圖片縮略圖功能示例05-28

    PHP生成圖片縮略圖類示例代碼07-31

    PHP生成Excel報表的方法05-24

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人