乱码乱a∨中文字幕,在线免费激情视频,亚洲欧美久久夜夜潮,国产在线网址

  1. <sub id="hjl7n"></sub>

    1. <sub id="hjl7n"></sub>

      <legend id="hjl7n"></legend>

      當(dāng)前位置:首頁(yè) >  站長(zhǎng) >  編程技術(shù) >  正文

      php實(shí)現(xiàn)圖片壓縮處理

       2020-10-30 13:44  來源: 腳本之家   我來投稿 撤稿糾錯(cuò)

        阿里云優(yōu)惠券 先領(lǐng)券再下單

      這篇文章主要為大家詳細(xì)介紹了php實(shí)現(xiàn)圖片壓縮處理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

      本文實(shí)例為大家分享了php實(shí)現(xiàn)圖片壓縮處理的具體代碼,供大家參考,具體內(nèi)容如下

      說明

      在項(xiàng)目中,經(jīng)常會(huì)遇到在前端頁(yè)面展示用戶自己上傳的圖片。當(dāng)部分圖片尺寸過大,頁(yè)面圖片過多的情況下(如論壇里需要顯示用戶頭像),會(huì)引起頁(yè)面加載緩慢的問題。由于用戶圖片已存儲(chǔ)導(dǎo)數(shù)據(jù)庫(kù),無法改變庫(kù)里的圖片大小,只能在獲取圖片路徑時(shí),壓縮圖片

      示例

      以下函數(shù)為圖片壓縮方法

      /**
       * 圖片壓縮處理
       * @param string $sFile 圖片路徑
       * @param int $iWidth 自定義圖片寬度
       * @param int $iHeight 自定義圖片高度
       */
      function getThumb($sFile,$iWidth,$iHeight){
        //判斷該圖片是否存在
        if(!file_exists(public_path().$sFile)) return $sFile;
        //判斷圖片格式
        $attach_fileext = get_filetype($sFile);
        if (!in_array($attach_fileext, array('jpg','png','jpeg'))){
          return $sFile;
        }
        //壓縮圖片
        $sFileNameS = str_replace(".".$attach_fileext, "_".$iWidth.'_'.$iHeight.'.'.$attach_fileext, $sFile);
        //判斷是否已壓縮圖片,若是則返回壓縮圖片路徑
        if(file_exists(public_path().$sFileNameS)){
          return $sFileNameS;
        }
        //解決手機(jī)端上傳圖片被旋轉(zhuǎn)問題
        if (in_array($attach_fileext, array('jpeg')) ){
          adjustPicOrientation(public_path().$sFile);
        }
        //生成壓縮圖片,并存儲(chǔ)到原圖同路徑下
        resizeImage(public_path().$sFile, public_path().$sFileNameS, $iWidth, $iHeight);
        if(!file_exists(public_path().$sFileNameS)){
          return $sFile;
        }
        return $sFileNameS;
      }

      /**
       *獲取文件后綴名
       */
      function get_filetype($filename) {
        $extend = explode("." , $filename);
        return strtolower($extend[count($extend) - 1]);
      }

      /**
       * 解決手機(jī)上傳圖片被旋轉(zhuǎn)問題
       * @param string $full_filename 文件路徑
       */
      function adjustPicOrientation($full_filename){
        $exif = exif_read_data($full_filename);
        if($exif && isset($exif['Orientation'])) {
          $orientation = $exif['Orientation'];
          if($orientation != 1){
            $img = imagecreatefromjpeg($full_filename);

            $mirror = false;
            $deg  = 0;

            switch ($orientation) {
              case 2:
                $mirror = true;
                break;
              case 3:
                $deg = 180;
                break;
              case 4:
                $deg = 180;
                $mirror = true;
                break;
              case 5:
                $deg = 270;
                $mirror = true;
                break;
              case 6:
                $deg = 270;
                break;
              case 7:
                $deg = 90;
                $mirror = true;
                break;
              case 8:
                $deg = 90;
                break;
            }
            if ($deg) $img = imagerotate($img, $deg, 0);
            if ($mirror) $img = _mirrorImage($img);
            //$full_filename = str_replace('.jpg', "-O$orientation.jpg", $full_filename);新文件名
            imagejpeg($img, $full_filename, 95);
          }
        }
        return $full_filename;
      }

      resizeImage(public_path().$sFile, public_path().$sFileNameS, $iWidth, $iHeight);

      /**
       * 生成圖片
       * @param string $im 源圖片路徑
       * @param string $dest 目標(biāo)圖片路徑
       * @param int $maxwidth 生成圖片寬
       * @param int $maxheight 生成圖片高
       */
      function resizeImage($im, $dest, $maxwidth, $maxheight) {
        $img = getimagesize($im);
        switch ($img[2]) {
          case 1:
            $im = @imagecreatefromgif($im);
            break;
          case 2:
            $im = @imagecreatefromjpeg($im);
            break;
          case 3:
            $im = @imagecreatefrompng($im);
            break;
        }

        $pic_width = imagesx($im);
        $pic_height = imagesy($im);
        $resizewidth_tag = false;
        $resizeheight_tag = false;
        if (($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight)) {
          if ($maxwidth && $pic_width > $maxwidth) {
            $widthratio = $maxwidth / $pic_width;
            $resizewidth_tag = true;
          }

          if ($maxheight && $pic_height > $maxheight) {
            $heightratio = $maxheight / $pic_height;
            $resizeheight_tag = true;
          }

          if ($resizewidth_tag && $resizeheight_tag) {
            if ($widthratio < $heightratio)
              $ratio = $widthratio;
            else
              $ratio = $heightratio;
          }


          if ($resizewidth_tag && !$resizeheight_tag)
            $ratio = $widthratio;
          if ($resizeheight_tag && !$resizewidth_tag)
            $ratio = $heightratio;
          $newwidth = $pic_width * $ratio;
          $newheight = $pic_height * $ratio;

          if (function_exists("imagecopyresampled")) {
            $newim = imagecreatetruecolor($newwidth, $newheight);
            imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $pic_width, $pic_height);
          } else {
            $newim = imagecreate($newwidth, $newheight);
            imagecopyresized($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $pic_width, $pic_height);
          }

          imagejpeg($newim, $dest);
          imagedestroy($newim);
        } else {
          imagejpeg($im, $dest);
        }
      }

      以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

      來源:腳本之家

      鏈接:https://www.jb51.net/article/195273.htm

      申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

      相關(guān)標(biāo)簽
      php教程

      相關(guān)文章

      熱門排行

      信息推薦