php生成圖片縮略圖的函數
添加時間:2014-11-29 17:54:31
添加:
思海網絡
具體用法如下:
$a=thumbImage('1.jpg',200,100,'2.jpg');//將1.jpg生成寬為200,高為100的縮略圖,并保存為2.jpg print_r($a);
打印結果:
Array(
[status] => 0
[file] => 1.jpg
[width] =>
200
[height] => 200
[savePath] => 2.jpg
[info] =>
縮略圖片生成成功
)
$a=thumbImage('1.jpg',200,100);//將1.jpg生成寬為200,高為100的縮略圖,并直接覆蓋1.jpg,不生成新圖片
函數代碼如下:
<?php /* *php生成圖片縮略圖的函數 *www.Alixixi.com */ function thumbImage($file,$thumbWidth,$thumbHeight,$savePath='',$isCut=true,$quality=100){ $result=array('status'=>0,'file'=>'','width'=>0,'height'=>0,'savePath'=>'','info'=>''); if(!file_exists($file)){ return array('status'=>1,'file'=>'','width'=>0,'height'=>0,'savePath'=>'','info'=>'圖片文件不存在'); } //檢測文件類型 $fp=fopen($file,'rb'); $str=fread($fp,2); //只讀2字節 fclose($fp); $str=@unpack("c2chars",$str); $typeCode=intval($str['chars1'].$str['chars2']); $fileType=''; switch($typeCode){ case 255216: $fileType='jpg'; break; case 7173: $fileType='gif'; break; case 6677: $fileType='bmp'; break; case 13780: $fileType='png'; break; default: $fileType=$typeCode; break; } if($str['chars1']=='-1'&&$str['chars2']=='-40'){ $fileType='jpg'; } if($str['chars1']=='-119'&&$str['chars2']=='80'){ $fileType='png'; } if(!in_array($fileType,array('jpg','gif','bmp','png'))){ return array('status'=>2,'file'=>'','width'=>0,'height'=>0,'savePath'=>'','info'=>'圖片文件類型不正確:'.$fileType); } //圖片縮放處理 if($fileType=='jpg'){ $im=imagecreatefromjpeg($file); } if($fileType=='gif'){ $im=imagecreatefromgif($file); } if($fileType=='png'){ $im=imagecreatefrompng($file); } if(empty($savePath)) $savePath=$file; $width=imagesx($im); $height=imagesy($im); if($width<$thumbWidth&&$height<$thumbHeight){ return array('status'=>3,'file'=>'','width'=>0,'height'=>0,'savePath'=>'','info'=>'圖片尺寸小于生成縮略圖的尺寸'); } $ratio=$width/$height;//實際圖象的比例 $thumbRatio=$thumbWidth/$thumbHeight;//改變后的圖象的比例 if($isCut){//裁切處理 if(function_exists('imagepng')&&(str_replace('.','',PHP_VERSION)>=512)){//針對php版本大于5.12參數變化后的處理情況 $quality=9; } if($ratio>=$thumbRatio){//高度優先 $newimg=imagecreatetruecolor($thumbWidth,$thumbHeight); imagecopyresampled($newimg,$im,0,0,0,0,$thumbWidth,$thumbHeight,(($height)*$thumbRatio),$height); imagejpeg($newimg,$savePath,$quality); } if($ratio<$thumbRatio){//寬度優先 $newimg=imagecreatetruecolor($thumbWidth,$thumbHeight); imagecopyresampled($newimg,$im,0,0,0,0,$thumbWidth,$thumbHeight,$width,(($width)/$thumbRatio)); imagejpeg($newimg,$savePath,$quality); } }else{//不裁切處理 if($ratio>=$thumbRatio){ $newimg=imagecreatetruecolor($thumbWidth,($thumbWidth)/$ratio); imagecopyresampled($newimg,$im,0,0,0,0,$thumbWidth,($thumbWidth)/$ratio,$width,$height); imagejpeg($newimg,$savePath,$quality); } if($ratio<$thumbRatio){ $newimg=imagecreatetruecolor(($thumbHeight)*$ratio,$thumbHeight); imagecopyresampled($newimg,$im,0,0,0,0,($thumbHeight)*$ratio,$thumbHeight,$width,$height); imagejpeg($newimg,$savePath,$quality); } } ImageDestroy($im);//www.Alixixi.com/php-function/1007.html return array('status'=>0,'file'=>$file,'width'=>$thumbWidth,'height'=>$thumbHeight,'savePath'=>$savePath,'info'=>'縮略圖片生成成功'); }
到此完成,大家可以試試。
關鍵字:php、函數、縮略圖
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解