中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php怎么實現上傳圖片并壓縮

發布時間:2021-08-06 09:21:56 來源:億速云 閱讀:198 作者:chen 欄目:開發技術

這篇文章主要介紹“php怎么實現上傳圖片并壓縮”,在日常操作中,相信很多人在php怎么實現上傳圖片并壓縮問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”php怎么實現上傳圖片并壓縮”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

實現代碼:

<?php 
function _UPLOADPIC($upfile, $maxsize, $updir, $newname = 'date') { 
  
 if ($newname == 'date') 
 $newname = date ( "Ymdhis" ); //使用日期做文件名 
 $name = $upfile ["name"]; 
 $type = $upfile ["type"]; 
 $size = $upfile ["size"]; 
 $tmp_name = $upfile ["tmp_name"]; 
  
 switch ($type) { 
 case 'image/pjpeg' : 
 case 'image/jpeg' : 
  $extend = ".jpg"; 
  break; 
 case 'image/gif' : 
  $extend = ".gif"; 
  break; 
 case 'image/png' : 
  $extend = ".png"; 
  break; 
 } 
 if (emptyempty ( $extend )) { 
 echo ( "警告!只能上傳圖片類型:GIF JPG PNG" ); 
 exit (); 
 } 
 if ($size > $maxsize) { 
 $maxpr = $maxsize / 1000; 
 echo ( "警告!上傳圖片大小不能超過" . $maxpr . "K!" ); 
 exit (); 
 } 
 if (move_uploaded_file ( $tmp_name, $updir . $newname . $extend )) { 
 return $updir . $newname . $extend; 
 } 
} 
 
function show_pic_scal($width, $height, $picpath) { 
 $imginfo = GetImageSize ( $picpath ); 
 $imgw = $imginfo [0]; 
 $imgh = $imginfo [1]; 
  
 $ra = number_format ( ($imgw / $imgh), 1 ); //寬高比 
 $ra2 = number_format ( ($imgh / $imgw), 1 ); //高寬比 
  
 
 if ($imgw > $width or $imgh > $height) { 
 if ($imgw > $imgh) { 
  $newWidth = $width; 
  $newHeight = round ( $newWidth / $ra ); 
  
 } elseif ($imgw < $imgh) { 
  $newHeight = $height; 
  $newWidth = round ( $newHeight / $ra2 ); 
 } else { 
  $newWidth = $width; 
  $newHeight = round ( $newWidth / $ra ); 
 } 
 } else { 
 $newHeight = $imgh; 
 $newWidth = $imgw; 
 } 
 $newsize [0] = $newWidth; 
 $newsize [1] = $newHeight; 
  
 return $newsize; 
} 
 
 
 
function getImageInfo($src) 
{ 
 return getimagesize($src); 
} 
/** 
* 創建圖片,返回資源類型 
* @param string $src 圖片路徑 
* @return resource $im 返回資源類型 
* **/ 
function create($src) 
{ 
 $info=getImageInfo($src); 
 switch ($info[2]) 
 { 
 case 1: 
  $im=imagecreatefromgif($src); 
  break; 
 case 2: 
  $im=imagecreatefromjpeg($src); 
  break; 
 case 3: 
  $im=imagecreatefrompng($src); 
  break; 
 } 
 return $im; 
} 
/** 
* 縮略圖主函數 
* @param string $src 圖片路徑 
* @param int $w 縮略圖寬度 
* @param int $h 縮略圖高度 
* @return mixed 返回縮略圖路徑 
* **/ 
 
function resize($src,$w,$h) 
{ 
 $temp=pathinfo($src); 
 $name=$temp["basename"];//文件名 
 $dir=$temp["dirname"];//文件所在的文件夾 
 $extension=$temp["extension"];//文件擴展名 
 $savepath="{$dir}/{$name}";//縮略圖保存路徑,新的文件名為*.thumb.jpg 
 
 //獲取圖片的基本信息 
 $info=getImageInfo($src); 
 $width=$info[0];//獲取圖片寬度 
 $height=$info[1];//獲取圖片高度 
 $per1=round($width/$height,2);//計算原圖長寬比 
 $per2=round($w/$h,2);//計算縮略圖長寬比 
 
 //計算縮放比例 
 if($per1>$per2||$per1==$per2) 
 { 
 //原圖長寬比大于或者等于縮略圖長寬比,則按照寬度優先 
 $per=$w/$width; 
 } 
 if($per1<$per2) 
 { 
 //原圖長寬比小于縮略圖長寬比,則按照高度優先 
 $per=$h/$height; 
 } 
 $temp_w=intval($width*$per);//計算原圖縮放后的寬度 
 $temp_h=intval($height*$per);//計算原圖縮放后的高度 
 $temp_img=imagecreatetruecolor($temp_w,$temp_h);//創建畫布 
 $im=create($src); 
 imagecopyresampled($temp_img,$im,0,0,0,0,$temp_w,$temp_h,$width,$height); 
 if($per1>$per2) 
 { 
 imagejpeg($temp_img,$savepath, 100); 
 imagedestroy($im); 
 return addBg($savepath,$w,$h,"w"); 
 //寬度優先,在縮放之后高度不足的情況下補上背景 
 } 
 if($per1==$per2) 
 { 
 imagejpeg($temp_img,$savepath, 100); 
 imagedestroy($im); 
 return $savepath; 
 //等比縮放 
 } 
 if($per1<$per2) 
 { 
 imagejpeg($temp_img,$savepath, 100); 
 imagedestroy($im); 
 return addBg($savepath,$w,$h,"h"); 
 //高度優先,在縮放之后寬度不足的情況下補上背景 
 } 
} 
/** 
* 添加背景 
* @param string $src 圖片路徑 
* @param int $w 背景圖像寬度 
* @param int $h 背景圖像高度 
* @param String $first 決定圖像最終位置的,w 寬度優先 h 高度優先 wh:等比 
* @return 返回加上背景的圖片 
* **/ 
function addBg($src,$w,$h,$fisrt="w") 
{ 
 $bg=imagecreatetruecolor($w,$h); 
 $white = imagecolorallocate($bg,255,255,255); 
 imagefill($bg,0,0,$white);//填充背景 
 
 //獲取目標圖片信息 
 $info=getImageInfo($src); 
 $width=$info[0];//目標圖片寬度 
 $height=$info[1];//目標圖片高度 
 $img=create($src); 
 if($fisrt=="wh") 
 { 
 //等比縮放 
 return $src; 
 } 
 else 
 { 
 if($fisrt=="w") 
 { 
  $x=0; 
  $y=($h-$height)/2;//垂直居中 
 } 
 if($fisrt=="h") 
 { 
  $x=($w-$width)/2;//水平居中 
  $y=0; 
 } 
 imagecopymerge($bg,$img,$x,$y,0,0,$width,$height,100); 
 imagejpeg($bg,$src,100); 
 imagedestroy($bg); 
 imagedestroy($img); 
 return $src; 
 } 
 
} 
 
 
?>

使用方法:

$filename=(_UPLOADPIC($_FILES["upload"],$maxsize,$updir,$newname='date')); 
 $show_pic_scal=show_pic_scal(230, 230, $filename); 
 resize($filename,$show_pic_scal[0],$show_pic_scal[1]);

到此,關于“php怎么實現上傳圖片并壓縮”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

寿宁县| 东至县| 德化县| 齐齐哈尔市| 海口市| 岚皋县| 武汉市| 昌图县| 尖扎县| 柘城县| 明星| 宜城市| 东城区| 滨州市| 太原市| 东兰县| 喀什市| 阜城县| 红桥区| 临城县| 太湖县| 桐城市| 浦城县| 林甸县| 莱西市| 闵行区| 尚志市| 莎车县| 尖扎县| 政和县| 娱乐| 芒康县| 阳信县| 肥东县| 通道| 资中县| 庄河市| 临夏县| 孟津县| 连南| 舒兰市|