您好,登錄后才能下訂單哦!
這篇文章主要介紹如何使用PHP實(shí)現(xiàn)服務(wù)端圖片生成縮略圖,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
代碼如下:
<?php //定義縮略圖片尺寸 $picSize = array( '100_100'=> 1, '200_100'=> 1 ); $imagePath = "../image/"; function parseUrl($url){ preg_match("/(?P<name>[\w\d]+)_w(?P<width>\d+)_h(?P<height>\d+)\.(?P<ext>\w+)/",$url,$match); return $match; } $urlArr = explode("/",$_SERVER['REQUEST_URI']); $imgName = $urlArr[count($urlArr)-1]; $picInfo = parseUrl($imgName); //錯誤尺寸 if(empty($picInfo['width']) || empty($picInfo['height']) || !array_key_exists($picInfo['width'].'_'.$picInfo['height'],$picSize)) die('不存在該尺寸圖片'); $originalPic = $imagePath.$picInfo['name'].'/'.$picInfo['name'].'.'.$picInfo['ext']; //原始圖不存在 if(!file_exists($originalPic)) die("圖片不存在!"); /** *等比例壓縮圖片 */ switch($picInfo['ext']){ case 'jpg': $orgImg = ImageCreateFromJpeg($originalPic); break; default: break; } $owidth = ImageSX($orgImg); //原始尺寸 $oheight = ImageSY($orgImg); $tW = $picInfo['width']; $tH = $picInfo['height']; //獲取縮略圖尺寸 if($owidth/$oheight > $tW/$tH){ $tH = intval($tW * $oheight/$owidth); }else{ $tW = intval($tH * $owidth/$oheight); } //生成背景圖 $new_img = ImageCreateTrueColor($picInfo['width'], $picInfo['height']); $bgColor = imagecolorallocate($new_img,255,255,255); if (!@imagefilledrectangle($new_img, 0, 0, $picInfo['width']-1, $picInfo['height']-1, $bgColor)) { echo "無法創(chuàng)建背景圖"; //@todo記錄日志 exit(0); } if (!@imagecopyresampled($new_img, $orgImg, ($picInfo['width']-$tW)/2, ($picInfo['height']-$tH)/2, 0, 0, $tW, $tH, $owidth, $oheight)) { echo "生成圖片失敗"; exit(0); } //生成圖片 ob_start(); imagejpeg($new_img); $_newImg = ob_get_contents(); ob_end_clean(); file_put_contents($imagePath.$picInfo['name']."/".$imgName, $_newImg); header("Content-type:image/jpeg; charset=utf-8"); imagejpeg($new_img); ?>
使用時(shí)候綁定apache conf 的 documentError 404 的handler 為此文件。。
以上是“如何使用PHP實(shí)現(xiàn)服務(wù)端圖片生成縮略圖”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。